MathML
Esta página ou se(c)ção precisa ser formatada para o padrão wiki. (agosto de 2020) |
Mathematical Markup Language (MathML) é uma linguagem de marcação matemática, uma aplicação de XML para descrever noções matemáticas e capturar sua estrutura e conteúdo. Parte do HTML5 e ISO ISO / IEC DIS 40314 desde 2015, o MathML visa integrar de fórmulas matemáticas em páginas World Wide Web e outros documentos.
História
[editar | editar código]A MathML 1 foi lançada como Recomendação W3C em abril de 1998 como a primeira linguagem XML recomendada pelo W3C. A versão 1.01 foi lançada em julho de 1999 e a versão 2.0 surgiu em fevereiro de 2001. Em outubro de 2003, a segunda ediçãode MathML versão 2.0 foi lançada com o último lançamento do MathML Working Group da W3C.MathML foi originalmente desenhada antes da finalização do namespaces XML. Entretanto, foi atribuído um namespace imediatamente após a conclusão da Namespace Recommendation (para o uso de XML, os elementos devem estar no namespace com namespace URI http://www.w3.org/1998/Math/MathML). Quando MathML é usada em HTML (em oposição a XML) este namespace é automaticamente inferido pelo analisador HTML e não precisa ser especificado no documento.
MathML versão 3.0
[editar | editar código]A versão 3.0 da especificação MathML foi lançada como uma Recomendação W3C em 20 outubro de 2010. Uma recomendação de A MathML for CSS Profile foi posteriormente lançada em 7 de junho de 2011.[1] Este é um subconjuntode MathML adaptável para o formato CSS. O outro conjunto Strict Content MathML fornece um subconjunto de Content MathML como uma estrutura uniforme e é desenhado para ser compatível como OpenMath. Outros elementos do conteúdo são definidos nos termos de uma transformação para o subconjunto estrito. Novos elementos de conteúdo incluem <bind>, que associam variáveis (<bvar>) a expressões. Por exemplo, um índice de somatório. O novo elemento <share> permite o compartilhamento de estruturas.[2]
O desenvolvimentode MathML 3.0 passou por vários estágios. Em junho de 2006, o W3C reorientou o MathML Working Group para produzir uma Recomendação MathML 3 até fevereiro de 2008 e em novembro de 2008 estendeu a atividade até abril de 2010. Um sexto projeto da revisãode MathML 3 foi lançado em junho de 2009. Em 10 de agosto de 2010, a versão 3 se transformou em uma Recomendação Proposta em vez de um projecto.[2] A segunda ediçãode MathML 3.0 foi lançada como uma Recomendação W3C em 10 de abril de 2014.[3] A especificação foi aprovada como um padrão internacional ISO/IEC 40314:2015 em 23 de junho de 2015.[4]
Apresentação e semântica
[editar | editar código]A MathML lida não apenas com a apresentação como também com o significado dos componentes das fórmulas (a última parte do MathML é conhecida como Content MathML). Por o significado ser preservado separadamente da apresentação da equação, a forma como o conteúdo é comunicado pode ser deixada ao usuário. Por exemplo, páginas web como MathML embutido podem ser visualizadas como páginas web normais com muitos browsers. Entretanto, usuários com deficiência visual podem ter a mesma leitura de MathML por meio de leitores de tela. Por exemplo, usando o MathPlayes plugin para Internet Explore, o Opera 9.50 ou a extensão Fire Vox para Firefox.
Presentation MathML
[editar | editar código]Presentation MathML foca na exibição de uma equação e possui cerca de 30 elementos. Todos os nomes dos elementos começam com m. Presentation MathML é construída a partir de tokes que são combinados usando elementos de alto nível, que controlam seu layout (há também cerca de 50 atributos, que controlam principalmente detalhes menores).
Os elementos tokem geralmente contêm apenas caracteres (não contêm outros elementos). Eles incluem:
<mi>x</mi>– identificadores<mo>+</mo>– operadores<mn>2</mn>– números<mtext>non zero</mtext>– texto
No entanto, nota–se que estes elementos token podem ser usados como pontos de extensão, permitindo marcações nas linguagens do host.MathML em HTML5 permite a maioria das marcações HTML em mtext e
<mtext><b>non</b> zero</mtext>
está em conformidade, com as marcações HTML sendo usadas dentrode MathML para marcar textos embutidos.
Estes são combinados usando elementos de layout, que geralmente contêm apenas elementos. Eles incluem:
<mrow>– linha horizontal de itens<msup>,<munderover>, entre outros – sobrescritos, limites acima e abaixo de operadores como somas, entre outros<mfrac>– frações<msqrt>and<mroot>– raízes<mfenced>– cercam o conteúdo com parênteses, por exemplo
Como de costume em HTML e XML, muitas entidades estão disponíveis para especificar símbolos especiais por nome como π e →. Uma característica interessantede MathML é que as entidades também existem para expressar operadores normalmente invisíveis como⁢ para multiplicação implícita. Eles são:
- U+2061 FUNCTION APPLICATION
- U+2062 INVISIBLE TIMES
- U+2063 INVISIBLE SEPARATOR
- U+2064 INVISIBLE PLUS
A especificação completa das entidades MathML é coordenada com as especificações correspondentes para uso com HTML e XML em geral.
Então, a expressão requer dois elementos de layout – um para criar a linha horizontal geral e outro para o expoente sobrescrito. Incluindo apenas os elementos de layout e os tokens (ainda não marcados), a estrutura se parece como:
<mrow>
a ⁢ <msup>x 2</msup>
+ b ⁢ x
+ c
</mrow>
Porém, os tokens individuais também precisam ser identificados como identificadores (mi), operadores (mo) ou números (mn). Com a marcação token, a forma completa termina como:
<mrow>
<mi>a</mi> <mo>⁢</mo> <msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo><mi>b</mi><mo>⁢</mo><mi>x</mi>
<mo>+</mo><mi>c</mi>
</mrow>
Um documento MathML válido consiste normalmente na declaração XML, na declaração DOCTYPE e no elemento do documento. O corpo do documento contém as expressões MathML, que aparecem nos elementos <math> conforme necessário. Geralmente, MathML será embutida em documentos mais gerais como HTML, DocBook ou outros esquemas XML. Um documento completo que consiste apenas no exemplo de MathMl acima é mostrado como:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mi>a</mi>
<mo>⁢</mo>
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<mi>b</mi>
<mo>⁢ </mo>
<mi>x</mi>
<mo>+</mo>
<mi>c</mi>
</mrow>
</math>
Content MathML
[editar | editar código]Content MathML foca na semântica ou no significado em vez do layout da expressão. É central para Content MathML o elemento <apply> que representa a função aplicação. A função aplicada é o primeiro elemento sob <apply> , e seus operadores e seus parâmetros são os elementos remanescentes. Content MathML usa apenas alguns atributos.
Tokens como identificadores e números são marcados individualmente muitos como Presentation MathML, mas com elementos como ci e cn. Em vez de serem simplesmente um outro tipo de token, os operadores são representados por elementos específicos, cuja semântica matemática é conhecida por MathML: times, power, entre outros. Existem mais de cem elementos diferentes para diferentes funções e operadores (ver ).
Por exemplo, <apply><sin/><ci>x</ci></apply> representa e <apply><plus/><ci>x</ci><cn>5</cn></apply> representa . os elementos representando operadores e funções são elementos vazios porque seus operandos são os outros elementos sob <apply> .
A expressão poderia ser representada como:
<math>
<apply>
<plus/>
<apply>
<times/>
<ci>a</ci>
<apply>
<power/>
<ci>x</ci>
<cn>2</cn>
</apply>
</apply>
<apply>
<times/>
<ci>b</ci>
<ci>x</ci>
</apply>
<ci>c</ci>
</apply>
</math>
Content MathML é quase isomorfo para expressões em uma linguagem funcional como Scheme.<apply>...</apply> equivale a Scheme (...), e os muitos elementos de operador e de função são funções Scheme. Com esta transformação literal trivial, além de desmarcar os tokens individuais, o exemplo acima se torna:
(plus
(times a (power x 2))
(times b x)
c)
Isto reflete a relação estreita conhecida entre as estruturas de elementos XML e LISP ou Scheme S–expressions.[5][6]
Exemplos e comparação com outros formatos
[editar | editar código]A fórmula quadrática:
poderia ser marcada usando a sintaxe LaTeX como:
x=\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
x={-b +- sqrt{b sup 2 – 4ac}} over 2a
em Apache OpenOffice Math e LibreOffice Math como:
x={-b plusminus sqrt {b^2 – 4 ac}} over {2 a}
x={-b +- sqrt {b^2 – 4ac}} over 2a
x={-b ± sqrt {b^2 – 4ac}} over 2a
em AsciiMath como:
x=(-b +- sqrt(b^2 – 4ac))/(2a)
A equação acima poderia ser representada como Presentation MathML como uma árvore de expressão feita a partir de elementos de layout como mfrac ou msqrt:
<math mode="display" xmlns="http://www.w3.org/1998/Math/MathML">
<semantics>
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo form="prefix">−<!-- − --></mo>
<mi>b</mi>
<mo>±<!-- ± --></mo>
<msqrt>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>−<!-- − --></mo>
<mn>4</mn>
<mo>⁢<!-- ⁢ --></mo>
<mi>a</mi>
<mo>⁢<!-- ⁢ --></mo>
<mi>c</mi>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mo>⁢<!-- ⁢ --></mo>
<mi>a</mi>
</mrow>
</mfrac>
</mrow>
<annotation encoding="TeX">
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
</annotation>
<annotation encoding="StarMath 5.0">
x={-b plusminus sqrt {b^2 - 4 ac}} over {2 a}
</annotation>
</semantics>
</math>
Este exemplo usa o elemento <annotation> , que pode ser usado para embutir uma notação semântica no formato non-XML format, por exemplo para arquivar a fórmula no formato usado por um editor de equação como StarMath ou pela marcação usando a sintaxe LaTeX.
Embora menos compacto que o TeX, a estrutura XML promete torná–lo amplamente utilizável, permite exibição instantânea em aplicações como web browsers e facilita uma interpretação do seu significado em softwares matemáticos. MathML não destina–se a ser escrita ou editada diretamente por seres humanos.[7]
Embutindo MathML em arquivos HTML/XHTML
[editar | editar código]MathML, sendo XML, pode ser incorporado dentro de outros arquivos XML como arquivos XHTML usando namespaces XML. Navegadores recentes como o Firefox 3+ e Opera 9.6+ (suporte incompleto) podem exibir Presentation MathML incorporado em XHTML.
