MathML: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Sls
Melhoria de conteúdo a partir de pesquisas e da tradução do verbete MathML, da Wikipédia em Inglês.
Etiquetas: Inserção de predefinição obsoleta Inserção do elemento "nowiki", possivelmente errônea
Linha 1: Linha 1:

{{Em tradução|data=Novembro de 2007}}
'''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.
'''Mathematical Markup Language''' (Linguagem de Marcação Matemática) ('''MathML''') é uma aplicação do [[XML]] para representar símbolos e fórmulas [[matemática]]s, apontada na integração dela em documentos [[World Wide Web]]. Ela é uma recomendação do grupo de trabalho matemático do [[W3C]].<ref>http://www.w3.org/1999/07/REC-MathML-19990707/ This specification of the markup language MathML is intended primarily for a readership consisting of those who will be developing or implementing renderers or editors using it, or software that will communicate using MathML as a protocol for input or output.</ref>

A especificação da versão 1.01 do formato foi distribuido em Julho de [[1999]] e a versão 2.0 apareceu em Fevereiro de 2001. Em Outubro de 2003, a segunda edição do MathML Versão 2.0 foi publicada como uma distribuição final pelo grupo de trabalho matemático do [[W3C]]. A versão 3.0 foi lançada em 21 de outubro de 2010, como uma revisão da versão 2.0 lançada 7 anos antes.<ref>http://www.w3.org/TR/MathML3/ MathML 3.0 was released as a W3C Recommendation on 21 October 2010.</ref>
==História==
MathML trata não somente da ''apresentação'' mas pode opcionalmente também incluir informação sobre o significado de componentes da fórmula (a última parte de MathML é conhecida como o índice MathML). Por causa do significado da equação ser preservado separado da apresentação, ''como o índice é comunicado pode ser deixado até o usuário.'' Por exemplo, páginas da web com MathML embutido poderiam ser visualizadas como páginas normais da web em muitos browsers, mas visualmente danificadas ,para o usuário podem também ter o mesmo MathML lidos a eles com o uso de [[leitores]] da tela (por exemplo se usar [[MathPlayer]] [[plugin]] para [[Internet Explorer]]).<ref>http://www.w3.org/1999/07/REC-MathML-19990707/chapter5.html MathML offers authors elements for both content and presentation markup.</ref>
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.
Um outro padrão chamado [[OpenMath]] que foi projetado (largamente pelo mesmo pessoal planejou o conteudo MathML) mais especificamente armazenando fórmulas semanticamente podem também ser usada como um complemento a MathML.

==Exemplo==
===MathML versão 3.0===
A bem conhecida [[fórmula de Bhaskara]]:
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.<ref name="CSSProfile">{{cite web|title=A MathML for CSS Profile|url=http://www.w3.org/TR/mathml-for-css/|publisher=W3C|accessdate=25 July 2013|date=7 June 2011}}</ref> 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.<ref name="V3">[http://www.w3.org/TR/MathML3/ Mathematical Markup Language Version 3.0 W3C Recommendation]. W3.org. Retrieved on 9 May 2012.</ref>
:<math>x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}</math>

Teria que ser escrita assim, usado a sintaxe [[TeX]] como abaixo:
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.<ref name="V3" /> A segunda ediçãode MathML 3.0 foi lançada como uma Recomendação W3C em 10 de abril de 2014.<ref name="V3-2">[http://www.w3.org/TR/MathML/ MathML Version 3.0 2nd Edition]. W3.org. Retrieved on 8 July 2014.</ref> A especificação foi aprovada como um padrão internacional [[International Electrotechnical Commission|ISO/IEC]] 40314:2015 em 23 de junho de 2015.<ref>[http://www.w3.org/2015/06/mathmlpas.html.en W3C MathML 3.0 Approved as ISO/IEC International Standard]. W3.org. Retrieved on July 12, 2015.</ref>
<nowiki>x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}</nowiki>

ou em MathML:
==Apresentação e semântica==
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 embedado podem ser visualizadas como páginas web normais com muitos browsers. Entretanto, usuários com deficiência visual podem ter a mesma leiturade 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 ===
Presentation MathML foca na exibição de uma equação e possui cerca de 30 elementos. Todos os nomes dos elementos começam com <code>m</code>. 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:

*<code><mi>x</mi></code> – identificadores
*<code><mo>+</mo></code> – operadores
*<code><mn>2</mn></code> – números
*<code><mtext>non zero</mtext></code> – 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
*<code>&lt;mtext>&lt;b>non&lt;/b> zero&lt;/mtext></code>

está em conformidade, com as marcações HTML sendo usadas dentrode MathML para marcar textos embedados (being used within the MathML to mark up the embedded text (colocando a primeira palavra em negrito, no exemplo acima).

Estes são combinados usando elementos de layout, que geralmente contêm apenas elementos. Eles incluem:

*<code><mrow></code> – linha horizontal de itens
*<code><msup></code>, <code> <munderover> </code>, entre outros – sobrescritos, limites acima e abaixo de operadores como somas, entre outros
* <code><mfrac></code> – frações
* <code><msqrt></code> and <code><mroot></code> – raízes
* <code><mfenced></code> –  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 <code>&amp;pi;</code> e <code>&amp;RightArrow;</code>. Uma característica interessantede MathML é que as entidades também existem para expressar operadores normalmente invisíveis como<code>&amp;InvisibleTimes;</code> 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[http://www.w3.org/TR/MathML3/chapter7.html] MathML é coordenada com as especificações correspondentes para uso com HTML e XML[http://www.w3.org/TR/xml-entity-names/] em geral.

Então, a expressão <math forcemathmode="mathml">a x^2+b x+c</math> 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:<source lang="xml">
<mrow>
a &InvisibleTimes; <msup>x 2</msup>
+ b &InvisibleTimes; x
+ c
</mrow>
</source>

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:

<source lang="xml">
<mrow>
<mi>a</mi> <mo>&InvisibleTimes;</mo> <msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo><mi>b</mi><mo>&InvisibleTimes;</mo><mi>x</mi>
<mo>+</mo><mi>c</mi>
</mrow>
</source>

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 <nowiki><math> conforme necessário. GeralmenteMathML será embedada em documentos mais gerais como </nowiki>[[HTML]], [[DocBook]] ou outros esquemas [[XML]]. Um documento completo que consiste apenas no exemplo de MathMl acima é mostrado como:

<source lang="xml">
<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<math>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
<mrow>
"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<mi>x</mi>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mo>=</mo>
<mfrac>
<mrow>
<mrow>
<mi>a</mi>
<mo>&InvisibleTimes;</mo>
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<mi>b</mi>
<mo>&InvisibleTimes; </mo>
<mi>x</mi>
<mo>+</mo>
<mi>c</mi>
</mrow>
</math>
</source>

=== Content MathML ===
Content MathML foca na semântica ou no significado em vez do layout da expressão. É central para Content MathML o elemento <code><apply></code> que representa a função aplicação. A função aplicada é o primeiro elemento sob <code><apply></code> , 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 <code>ci</code> e <code>cn</code>. 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 [http://www.w3.org/TR/MathML3/chapter4.html#contm.opel]).

Por exemplo, {{code|2=xml|<apply><sin/><ci>x</ci></apply>}} representa <math>\sin(x)</math> e {{code|2=xml|<apply><plus/><ci>x</ci><cn>5</cn></apply>}} representa <math>x+5</math>. os elementos representando operadores e funções são elementos vazios porque seus operandos são os outros elementos sob <code><apply></code> .

A expressão <math>a x^2+b x+c</math> poderia ser representada como:

<source lang="xml">
<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>
</source>

Content MathML é quase isomorfo para expressões em uma linguagem funcional como Scheme.<code><apply>...</apply></code> equivale a Scheme <code>(...)</code>, 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:
<source lang="lisp">
(plus
(times a (power x 2))
(times b x)
c)
</source>
Isto reflete a relação estreita conhecida entre as estruturas de elementos XML e LISP ou Scheme S–expressions.<ref>Steven DeRose. The SGML FAQ Book: Understanding the Relationship of SGML and XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8.</ref><ref>[[Canonical S-expressions#cite note-0]]</ref>

==Exemplos e comparação com outros formatos ==
A fórmula quadrática:

<math>x=\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}</math>

poderia ser marcada usando a sintaxe [[LaTeX]] como:
<source lang="latex">x=\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}</source>
em troff/eqn como:
<nowiki>x={-b +- sqrt{b sup 2 – 4ac}} over 2a</nowiki>
em Apache OpenOffice Math e LibreOffice Math como:
<nowiki>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</nowiki>
em [[ASCIIMathML|AsciiMath]] como:
<nowiki>x=(-b +- sqrt(b^2 – 4ac))/(2a)</nowiki>
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:
<source lang="xml">
<math mode="display" xmlns="http://www.w3.org/1998/Math/MathML">
<semantics>
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mrow>
<mo>-</mo>
<mo form="prefix">&#x2212;<!-- − --></mo>
<mi>b</mi>
<mi>b</mi>
<mo>&#x00B1;<!-- &PlusMinus; --></mo>
</mrow>
<mo>&PlusMinus;</mo>
<msqrt>
<msqrt>
<mrow>
<msup>
<msup>
<mi>b</mi>
<mi>b</mi>
<mn>2</mn>
<mn>2</mn>
</msup>
</msup>
<mo>-</mo>
<mo>&#x2212;<!-- − --></mo>
<mrow>
<mn>4</mn>
<mn>4</mn>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<mo>&InvisibleTimes;</mo>
<mi>a</mi>
<mi>a</mi>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<mo>&InvisibleTimes;</mo>
<mi>c</mi>
<mi>c</mi>
</msqrt>
</mrow>
</mrow>
</mrow>
<mrow>
</msqrt>
<mn>2</mn>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
</mrow>
<mrow>
<mi>a</mi>
<mn>2</mn>
</mrow>
<mo>&InvisibleTimes;</mo>
</mfrac>
<mi>a</mi>
</mrow>
<annotation encoding="TeX">
</mrow>
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
</mfrac>
</annotation>
</mrow>
<annotation encoding="StarMath 5.0">
x={-b plusminus sqrt {b^2 - 4 ac}} over {2 a}
</annotation>
</semantics>
</math>
</math>
</source>
</source>

Embora menos compacta se comparada à TeX, a estruturação XML promete tornar a sintaxe MathML amplamente utilizável, levando em conta o [[instant display]] em aplicativos tais como navegadores da Web, além de facilitar uma clara interpretação de seu significado em softwares matemáticos. A MathML não é destinada a ser escrita ou editada diretamente por pessoas.
Este exemplo usa o elemento  <code><annotation></code> , que pode ser usado para embedar 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]].
==Programas que suportam==

Muitos utilitários para converter expressões matemáticas para MathML estão disponíveis, incluindo conversões [http://pear.math.pitt.edu/mathzilla/itex2mml.html] entre [[TeX]] e MathML. [[MathType]] para [[Design Science]] permite aos usuários criar equações numa janela [[WYSIWYG]] e exportá-la para MathML. Também o [[Wolfram Research]] provê uma [http://www.mathmlcentral.com/Tools/ToMathML.jsp] web page para converter expressões matemáticas tipificadas para MathML.
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 browser]]s 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.<ref>{{cite web|url=http://www.w3.org/TR/REC-MathML/#abstract|title=Mathematical Markup Language (MathML) 1.01 Specification (Abstract)|accessdate=26 September 2006|last=Buswell|first=Steven|author2=Devitt, Stan|author3=Diaz, Angel|date=7 July 1999|quote=While MathML is human-readable it is anticipated that, in all but the simplest cases, authors will use equation editors, conversion programs, and other specialized software tools to generate MathML.|display-authors=etal}}</ref>
Outro editor [[WYSIWYG]] de MathML, é o Formulator [http://www.hermitech.ic.zt.ua/projects/formulator/index.html], provê um modo para importar/exportar MathML com suporte para algumas entradas abstratas como [[Exponencial]] e [[Differencial]]. O [[W3C]] Navegador/Editor [[Amaya (navegador)|Amaya]] pode também ser mencionado como um editor [[WYSIWYG]] de MathML.

Dos navegadores principais, aquele que escolheu o suporte direto é uma versão recente do [[Mozilla]] e derivados(como o [[Firefox]])[http://www.mozilla.org/projects/mathml/authoring.html]. Outros navegadores que suportam o formato usando [[plugin]]s externos. Por exemplo, o [[Internet Explorer]] suporta MathML usando o plugin [[Design Science]] [[MathPlayer]].
==Embedando MathML em arquivos HTML/XHTML ==
MathML é também suportado pelos principais produtos de escritório, produtos como [[Microsoft Word]], [[OpenOffice.org]] e o [[KOffice]] e por softwares matemáticos como o [[MathType]] e o [[Mathematica]].

Talvez, exceto para o [[Mozilla]], [[MathPlayer]] e [[Amaya (navegador)|Amaya]], nenhum dos produtos mencionados acima suporta todos os elementos básicos do MathML 2.0 (ex. elementos <mmultiscripts>) e seus desenvolvimentos.
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.
==Veja também==

* [[XML]]
<source lang="xml">
* [[HTML]]
<?xml version="1.0" encoding="UTF-8"?>
* [[XHTML]]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
{{Referências}}
"http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Example of MathML embedded in an XHTML file</title>
<meta name="description" content="Example of MathML embedded in an XHTML file"/>
</head>
<body>
<h1>Example of MathML embedded in an XHTML file</h1>
<p>
The area of a circle is
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mi>&#x03C0;<!-- π --></mi>
<mo>&#x2062;<!-- &InvisibleTimes; --></mo>
<msup>
<mi>r</mi>
<mn>2</mn>
</msup>
</math>.
</p>
</body>
</html>

</source>
:[[File:MathMLxhtml.png|nofloat|435px]]
:<small>A rendering of the formula for a circle in MathML+XHTML using Firefox 22 on Mac OS X</small>

MathML também é suportado em arquivos [[HTML5]] nas versões atuais do [[WebKit]] ([[Safari (web browser)|Safari]]), Gecko ([[Firefox]]). Não há necessidade de especificar namespaces como no XHTML.

<source lang="html5">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example of MathML embedded in an HTML5 file</title>
</head>
<body>
<h1>Example of MathML embedded in an HTML5 file</h1>
<p>
The area of a circle is
<math>
<mi>&pi;</mi>
<mo>&InvisibleTimes;</mo>
<msup>
<mi>r</mi>
<mn>2</mn>
</msup>
</math>.
</p>
</body>
</html>
</source>

==Suporte de software==

===Web browsers===
Dos principais [[web browser]]s, browsers baseados em Gecko (por exemplo, [[Firefox]] e Camino) têm o suporte nativo mais completo para MathML.<ref>{{citation|title=Mozilla MathML Status|last=Wang|first=Frédéric|url=https://developer.mozilla.org/en-US/docs/Mozilla_MathML_Project/Status|publisher=Mozilla}}</ref><ref>{{citation|title=Authoring MathML for Mozilla|last=Sidje|first=Roger B.|url=http://www.mozilla.org/projects/mathml/authoring.html|publisher=Mozilla}}</ref>

Embora o mecanismo de layout do [[WebKit]] tenha uma versão de desenvolvimento do MathML,<ref>{{citation|title=Bug 3251 – Implement MathML (master bug)|url=https://bugs.webkit.org/show_bug.cgi?id=3251|publisher=WebKit}} . . . (However, "see also") https://trac.webkit.org/wiki/MathML%20Status</ref> este recurso está disponível somente a partir da versão 5.1 do Safari, Chrome 24<ref>{{Citation|title=MathML Support Coming To Chrome|url=http://browserfame.com/900/mathml-in-chrome|publisher=BrowserFame|accessdate=16 October 2012|postscript=}}</ref><ref>{{Citation|title=Stable Chrome 24 supports MathML and closes security holes|url=http://www.h-online.com/open/news/item/Stable-Chrome-24-supports-MathML-and-closes-security-holes-1781648.html|publisher=The H Online|accessdate=11 January 2013|postscript=}}</ref>, mas não em versões posteriores do Google Chrome.<ref>{{Citation|title=Stable Channel Update|url=http://googlechromereleases.blogspot.ca/2013/02/stable-channel-update_21.html|accessdate=7 April 2013|postscript=}}</ref> O Google removeu o suporte do MathML, reivindicando problemas de segurança arquitetônicos. Em outubro de 2013, a implementação do WebKit / Safari apresentava vários bugs.<ref>{{cite web|url=http://www.maths-informatique-jeux.com/blog/frederic/?post/2013/10/12/Funding-MathML-Developments-in-Gecko-and-WebKit|title=Funding MathML Developments in Gecko and WebKit - Blog de Frédéric|author=Frédéric Wang|work=maths-informatique-jeux.com|accessdate=22 November 2014}}</ref>

[[Opera (web browser)|Opera]], entre as versões 9.5 e 12, tem suporte para MathML para CSS,<ref>{{citation|title=Can Kestrels do Math? MathML support in Opera Kestrel|last=McCathieNevile|first=Charles|date=27 September 2007|url=http://dev.opera.com/articles/view/can-kestrels-do-math-mathml-support-in/|publisher=Opera}}</ref><ref>{{citation|title=Even more work|last=Olsen|first=Tommy A.|date=16 November 2007|archiveurl=https://web.archive.org/web/20071118141611/http://my.opera.com/desktopteam/blog/2007/11/16/even-more-work|url=http://my.opera.com/desktopteam/blog/2007/11/16/even-more-work|publisher=Opera|archivedate=18 November 2007}}</ref> mas é incapaz de posicionar marcas diacríticas corretamente.<ref>[http://web.archive.org/web/20081211143506/http://my.opera.com/mathml/blog/show.dml/1460837#comments MathML – The Opera MathML blog]. My.opera.com (1 November 2007). Retrieved on 9 May 2012.</ref>  Antes da versão 9.5, era necessário JavaScript do usuário ou folhas de estilo personalizadas para emular o suporte MathML.<ref>[http://web.archive.org/web/20080928225043/http://my.opera.com/community/forums/topic.dml?id=124033 UserJS for MathML 2.0]. My.opera.com. Retrieved on 9 May 2012.</ref> A partir da versão 14, o Opera subtiuti o suporte de MathML para Chromium 25.<ref>{{citation|title=Opera 14 beta for Android is out|archiveurl=https://web.archive.org/web/20130308155256/http://my.opera.com/ODIN/blog/2013/03/05/opera-14-beta-for-android-is-out|url=http://my.opera.com/ODIN/blog/2013/03/05/opera-14-beta-for-android-is-out|archivedate=2013-03-08}}</ref>

[[Internet Explorer]] não tem suporte nativo para MathML. O suporte para [[Internet Explorer 6|IE6]] por meio do [[Internet Explorer 9|IE9]] pode ser adicionado com a instalação do plugin MathPlayer.<ref>{{citation|title=MathPlayer – version history|url=http://www.dessci.com/en/products/mathplayer/versionhistory.htm}}</ref> IE10 apresenta alguns bugs com MathPlayer, e a Microsoft decidiu desabilitar completamente no IE11 a interface de plugin binário necessária para o MathPlayer.<ref>{{cite web|url=http://news.dessci.com/2013/10/microsoft-cripples-display-math-ie10-11.html|title=Microsoft cripples the display of math in IE10 & 11|work=dessci.com|accessdate=22 November 2014}}</ref> O MathPlayer tem uma licença que pode limitar seu uso ou distribuição em páginas web comerciais e software. Usar ou distribuir o plugin MathPlayer para exibir conteúdo HTML por meio do controle WebBrowser em software comercial também pode ser proibido por esta licença.

[[Konqueror]] baseado em [[KHTML]] não tem suporte para MathML.<ref>{{citation |url=http://bugs.kde.org/show_bug.cgi?id=30526 |title=Bug 30526 – MathML support for Konqi}}</ref>

A qualidade da renderização de MathML em um navegador depende das fontes instaladas. O projeto STIX Fonts lançou um conjunto abrangente de fontes matemáticas sob licença aberta. A fonte Cambria Math fornecida com o Microsoft Windows tinha um suporte ligeiramente mais limitado.<ref name="Vismor">{{Citation|title=Viewing Mathematics on the Internet|last=Vismor|first=Timothy|url=https://vismor.com/documents/site_implementation/viewing_mathematics/viewing_mathematics.php|accessdate=13 April 2011}}</ref>

De acordo com um membro da equipe MathJax, nenhum dos principais fabricantes de navegadores pagou qualquer seus desenvolvedores para trabalhos de renderização de MathML. Qualquer apoio existente é resultado trabalho voluntário (não remunerado)..<ref>{{cite web|url=http://radar.oreilly.com/2013/11/mathml-forges-on.html|title=MathML forges on|author=Peter Krautzberger|work=oreilly.com|accessdate=22 November 2014}}</ref>

Em 2015, a Associação MathML foi fundada para apoiar a adoção do padrão MathML.<ref>{{cite|url=http://mathml-association.org/about.html|title=Mondial Association for Tools Handling MathML|accessdate=20 June 2016|author1=Deyan Ginev|author2=Michael Kohlhase|author3=Moritz Schubotz|author4=Raniere Silva|author5=Frédéric Wang}}</ref>

=== Editores ===
Editores com suporte nativo MathML (incluindo copiar e colar para MathML) são MathFlow e MathType, do Design Science, MathMagic e Publicon, da [[Wolfram Research]], e WIRIS.<ref>[http://www.wiris.com/en/editor/discover/reach-the-highest-standard-mathml WIRIS editor page describing the use of MathML]. Wiris.com. Retrieved on 9 May 2012.</ref> Uma lista completa de editores MathML está disponível no W3C.<ref>[http://www.w3.org/Math/Software/mathml_software_cat_editors.html MathML Software – Editors at W3C]. W3.org (24 April 2012). Retrieved on 9 May 2012.</ref>

MathML também conta com suporte dos principais ''pacotes'' ''office'' como [[Apache OpenOffice]] (via OpenOffice Math), [[LibreOffice]] (via LibreOffice Math), [[Calligra Suite]] (antigo [[KOffice]]), Apple's Pages<ref>{{Cite news|url=https://support.apple.com/en-us/HT207243|title=What's New in Pages for Mac|work=Apple Support|access-date=2017-04-06|language=en-US}}</ref> e [[Microsoft Office 2007|MS Office 2007]], além de software matemáticos como [[Mathematica]], Maple e a versão para Microsoft Windows da Casio ClassPad 300. O navegador W3C / editor Amaya também pode ser mencionado como um editor [[WYSIWYG]] MathML.

Firemath, um ''add-on'' para Firefox, fornece um editor WYSIWYG MathML.

A maioria dos editores apenas produzem Presentation MathML. O editor de fórmulas MathDox é um editor OpenMath que também fornece apresentação e conteúdo MathML. O Formulator MathML Weaver usa o estilo WYSIWYG para editar apresentação, conteúdo e marcações de MathML.

===Reconhecimento da caligrafia===
[http://webdemo.myscript.com/#/demo/equation Web Equation] pode converter manuscritos para MathML. [[Windows 7]] tem uma ferramenta interna chamada de Math Input Panel, que converte manuscrito para MathML<ref>{{cite web|url=http://windows.microsoft.com/en-us/windows7/use-math-input-panel-to-write-and-correct-math-equations|title=Use Math Input Panel to write and correct math equations|work=windows.microsoft.com|accessdate=22 November 2014}}</ref> (ao contrário do pacote do Microsoft Office, o Math Input Panel não usa o formato OMML, mas os aplicativos do Microsoft Office podem converter / colar do MathML em seu formato interno preferido). Embora a tecnologia subjacente também seja exposta para uso em outros aplicativos como um controle [[ActiveX]] chamado de Math Input Control<ref name="HutchisonCarette2009">{{cite book|author1=David Hutchison|author2=Jacques Carette|author3=Claudio Sacerdoti Coen|title=Intelligent Computer Mathematics: 16th Symposium, Calculemus 2009, 8th International Conference, MKM 2009, Grand Bend, Canada, July 6-12, 2009, Proceedings|url=https://books.google.com/books?id=IKNmax4dZ70C&pg=PA29|year=2009|publisher=Springer Science & Business Media|isbn=978-3-642-02614-0|page=29}}</ref>, deve–se notar que o ActiveX está desativado e não terá necessariamente suporte em futuros softwares da Microsoft como seu navegador [[Microsoft Edge]].

===Conversão===
Há várias utilidades para conversão para e de MathML que estão disponíveis. [[W3.org]] mantém uma lista de softwares relacionado a MathML para download.<ref>{{cite web|url=http://www.w3.org/Math/Software/|title=MathML Implementations|work=w3.org|accessdate=22 November 2014}}</ref>

===Conversão web===
ASCIIMathML<ref>[http://www1.chapman.edu/~jipsen/mathml/asciimath.html ASCIIMathML: Math on the web for everyone]. .chapman.edu. Retrieved on 9 May 2012.</ref> fornece uma biblioteca [[JavaScript]] para reescrever uma sintaxe de texto parecida com wiki usada em páginas web em MathML, que funciona em navegadores baseados em Gecko e no [[Internet Explorer]] com MathPlayer. LaTeXMathML<ref>[http://www.maths.nottingham.ac.uk/personal/drw/lm.html LaTeXMathML: a dynamic LaTeX mathematics to MathML converter]. Maths.nottingham.ac.uk. Retrieved on 9 May 2012.</ref> faz o mesmo para o subconjunto da sintaxe matemática LaTeX padrão. A sintaxe ASCIIMathML também poderia ser bastante familiar para qualquer pessoa acostumada às calculadoras científicas eletrônicas.

MathJax, uma biblioteca de JavaScript para renderização de fórmulas matemáticas expressas em LaTeX, AsciiMath ou MathML, também pode ser usada para traduzir LaTeX ou AsciiMath em MathML para interpretação direta pelo navegador.<ref>[http://www.mathjax.org/resources/docs/?mathml.html MathJax MathML Support]. Mathjax.org. Retrieved on 9 May 2012.</ref><ref>{{Citation|title=What you need to know about the Maths Stack|last1=Cuellar|last2=Topping|first1=Autumn|first2=Paul|date=June 2013|url=http://xmllondon.com/2013/presentations/cuellar/|journal=XML London 2013|pages=63–68|isbn=978-0-9926471-0-0|doi=10.14337/XMLLondon13.Cuellar01|postscript=}}</ref>

Equation Server para .NET de soft4science pode ser usado no lado do servidor ([[ASP.NET]]) para TeX-Math<ref>[http://www.tex-math.net TeX-Math]. TeX-Math. Retrieved on 9 May 2012.</ref> (subconjunto da sintaxe matemática do LaTeX) para a conversão MathML e também pode criar imagens bitmap (png, jpg, gif, entre outras) a partir da entrada TeX-Math ou MathML.

<u>JqMath<ref>[http://mathscribe.com/author/jqmath.html jqMath – Put Math on the Web]. Mathscribe.com. Retrieved on 15 July 2015.</ref> é um módulo de JavaScript que converte dinamicamente uma sintaxe simples parecida com TeX para MathML se o navegador o suportar, senão para simples HTML e CSS.</u>

LaTeXML é uma reimplementação completa do sistema de tipografia TeX, capaz de converter documentos LaTeX em HTML e em ePub, opcionalmente usando MathML ou convertendo expressões matemáticas em imagens png ou svg. Esta é uma das poucas ferramentas que também fornecem saída Content MathML de conteúdo opcional para as equações convertidas.

===Suporte para desenvolvedores de software===
O suporte para o formato MathML acelera o desenvolvimento de aplicativos de software em vários tópicos como educação assistida por computador (ensino à distância, livros didáticos eletrônicos, entre outros materiais de sala de aula), a criação automatizada de relatórios, sistemas de álgebra computacional, ferramentas de criação, treinamento e publicação tanto para a web quanto para desktop, entre muitas outras aplicações para matemática, ciências, negócios, economia. Vários fornecedores de software propõem uma edição de componentes de seus editores MathML, fornecendo o caminho mais fácil para os desenvolvedores de software inserirem funcionalidades de renderização, edição e processamento matemáticas em suas aplicações. Por exemplo, o Formulator ActiveX Control do Laboratório Hermitech pode ser incorporado a um aplicativo como o editor MathML. A [[Design Science (company)|Design Science]] oferece um kit de ferramentas para a construção de páginas web que incluem matemática interativa (MathFlow Developers Suite<ref>[http://www.dessci.com/en/products/mathflow MathFlow]. Dessci.com. Retrieved on 9 May 2012.</ref>).

==Outros padrões==

Outro padrão chamado de OpenMath que foi projetado (principalmente pelas mesmas pessoas que criaram o Content MathML) mais especificamente para arquivar fórmulas semanticamente também pode ser usado para complementar MathML. Os dados do OpenMath podem ser embedados em MathML usando o elemento <code><nowiki><annotation-xml encoding="OpenMath"></nowiki></code> . Os dicionários de conteúdo OpenMath podem ser usados ​​para definir o significado dos elementos <code><nowiki><csymbol></nowiki></code> . A expressão seguinte define ''P''<sub>1</sub>(''x'') como o primeiro polinômio de Legendre:
<source lang="xml">
<apply>
<csymbol encoding="OpenMath" definitionURL="http://www.openmath.org/cd/contrib/cd/orthpoly1.xhtml#legendreP">
<msub><mi>P</mi><mn>1</mn></msub>
</csymbol>
<ci>x</ci>
</apply>
</source>

O formato OMDoc foi criado para marcação de estruturas matemáticas maiores que fórmulas, de declarações como definições, teoremas, provas ou exemplos a teorias e livros. As fórmulas em documentos OMDoc podem ser escritas em Content MathML ou em OpenMath. Elas são convertidos para Presentation MathML para apresentação.

O Office Open XML (OOXML) padrão [[International Organization for Standardization|SO]]/[[International Electrotechnical Commission|IEC]] define uma sintaxe de matemática XML diferente, derivada de produtos do Microsoft Office. Entretanto, ela é parcialmente compatível por meio de [[XSL Transformations]] relativamente simples.<ref>{{Citation|title=XHTML and MathML from Office 2007|author=David Carlisle|date=9 May 2007|url=http://dpcarlisle.blogspot.com/2007/04/xhtml-and-mathml-from-office-20007.html|publisher=David Carlisle|accessdate=20 September 2007|postscript=}}</ref>

==Referências==
{{Reflist|30em}}

==Leituras adicionais==
* [http://www.w3.org/1999/07/REC-MathML-19990707/ W3C Recommendation: Mathematical Markup Language (MathML) 1.01 Specification]
* [http://www.w3.org/TR/2003/REC-MathML2-20031021/ W3C Recommendation: Mathematical Markup Language (MathML) Version 2.0 (Second Edition)]
* [http://www.w3.org/TR/2010/REC-MathML3-20101021/ W3C Recommendation: Mathematical Markup Language (MathML) Version 3.0 (Third Edition)]

*

=={{Ligações externas}}==
=={{Ligações externas}}==
* [http://www.w3.org/Math/ W3C Math Home] — Contem a especificação, um [[FAQ]], e uma lista de [[programa]]s que [[suporta]]m MathML.
* [http://www.w3.org/Math/ W3C Math Home] — Contem a especificação, um [[FAQ]], e uma lista de [[programa]]s que [[suporta]]m MathML.

Revisão das 16h57min de 5 de julho de 2017

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

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

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

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 embedado podem ser visualizadas como páginas web normais com muitos browsers. Entretanto, usuários com deficiência visual podem ter a mesma leiturade 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

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 embedados (being used within the MathML to mark up the embedded text (colocando a primeira palavra em negrito, no exemplo acima).

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 &pi; e &RightArrow;. Uma característica interessantede MathML é que as entidades também existem para expressar operadores normalmente invisíveis como&InvisibleTimes; 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[1] MathML é coordenada com as especificações correspondentes para uso com HTML e XML[2] 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 &InvisibleTimes; <msup>x 2</msup>
      + b &InvisibleTimes; 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>&InvisibleTimes;</mo> <msup><mi>x</mi><mn>2</mn></msup>
      <mo>+</mo><mi>b</mi><mo>&InvisibleTimes;</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. GeralmenteMathML será embedada 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>&InvisibleTimes;</mo>
      <msup>
        <mi>x</mi>
        <mn>2</mn>
      </msup>
      <mo>+</mo>
      <mi>b</mi>
      <mo>&InvisibleTimes; </mo>
      <mi>x</mi>
      <mo>+</mo>
      <mi>c</mi>
    </mrow>
  </math>

Content MathML

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 [3]).

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

A fórmula quadrática:

poderia ser marcada usando a sintaxe LaTeX como:

x=\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

em troff/eqn como:

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">&#x2212;<!-- − --></mo>
        <mi>b</mi>
        <mo>&#x00B1;<!-- &PlusMinus; --></mo>
        <msqrt>
          <msup>
            <mi>b</mi>
            <mn>2</mn>
          </msup>
          <mo>&#x2212;<!-- − --></mo>
          <mn>4</mn>
          <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
          <mi>a</mi>
          <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
          <mi>c</mi>
        </msqrt>
      </mrow>
      <mrow>
        <mn>2</mn>
        <mo>&#x2062;<!-- &InvisibleTimes; --></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 embedar 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]

Embedando MathML em arquivos HTML/XHTML

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.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html  PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
  "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Example of MathML embedded in an XHTML file</title>
    <meta name="description" content="Example of MathML embedded in an XHTML file"/>
  </head>
  <body>
    <h1>Example of MathML embedded in an XHTML file</h1>
    <p>
      The area of a circle is 
      <math xmlns="http://www.w3.org/1998/Math/MathML">
        <mi>&#x03C0;<!-- π --></mi>
        <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
        <msup>
          <mi>r</mi>
          <mn>2</mn>
        </msup>
      </math>.
    </p>
  </body>
</html>
nofloat
A rendering of the formula for a circle in MathML+XHTML using Firefox 22 on Mac OS X

MathML também é suportado em arquivos HTML5 nas versões atuais do WebKit (Safari), Gecko (Firefox). Não há necessidade de especificar namespaces como no XHTML.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Example of MathML embedded in an HTML5 file</title>
  </head>
  <body>
    <h1>Example of MathML embedded in an HTML5 file</h1>
    <p>
      The area of a circle is 
      <math>
        <mi>&pi;</mi>
        <mo>&InvisibleTimes;</mo>
        <msup>
          <mi>r</mi>
          <mn>2</mn>
        </msup>
      </math>.
    </p>
  </body>
</html>

Suporte de software

Web browsers

Dos principais web browsers, browsers baseados em Gecko (por exemplo, Firefox e Camino) têm o suporte nativo mais completo para MathML.[8][9]

Embora o mecanismo de layout do WebKit tenha uma versão de desenvolvimento do MathML,[10] este recurso está disponível somente a partir da versão 5.1 do Safari, Chrome 24[11][12], mas não em versões posteriores do Google Chrome.[13] O Google removeu o suporte do MathML, reivindicando problemas de segurança arquitetônicos. Em outubro de 2013, a implementação do WebKit / Safari apresentava vários bugs.[14]

Opera, entre as versões 9.5 e 12, tem suporte para MathML para CSS,[15][16] mas é incapaz de posicionar marcas diacríticas corretamente.[17]  Antes da versão 9.5, era necessário JavaScript do usuário ou folhas de estilo personalizadas para emular o suporte MathML.[18] A partir da versão 14, o Opera subtiuti o suporte de MathML para Chromium 25.[19]

Internet Explorer não tem suporte nativo para MathML. O suporte para IE6 por meio do IE9 pode ser adicionado com a instalação do plugin MathPlayer.[20] IE10 apresenta alguns bugs com MathPlayer, e a Microsoft decidiu desabilitar completamente no IE11 a interface de plugin binário necessária para o MathPlayer.[21] O MathPlayer tem uma licença que pode limitar seu uso ou distribuição em páginas web comerciais e software. Usar ou distribuir o plugin MathPlayer para exibir conteúdo HTML por meio do controle WebBrowser em software comercial também pode ser proibido por esta licença.

Konqueror baseado em KHTML não tem suporte para MathML.[22]

A qualidade da renderização de MathML em um navegador depende das fontes instaladas. O projeto STIX Fonts lançou um conjunto abrangente de fontes matemáticas sob licença aberta. A fonte Cambria Math fornecida com o Microsoft Windows tinha um suporte ligeiramente mais limitado.[23]

De acordo com um membro da equipe MathJax, nenhum dos principais fabricantes de navegadores pagou qualquer seus desenvolvedores para trabalhos de renderização de MathML. Qualquer apoio existente é resultado trabalho voluntário (não remunerado)..[24]

Em 2015, a Associação MathML foi fundada para apoiar a adoção do padrão MathML.[25]

Editores

Editores com suporte nativo MathML (incluindo copiar e colar para MathML) são MathFlow e MathType, do Design Science, MathMagic e Publicon, da Wolfram Research, e WIRIS.[26] Uma lista completa de editores MathML está disponível no W3C.[27]

MathML também conta com suporte dos principais pacotes office como Apache OpenOffice (via OpenOffice Math), LibreOffice (via LibreOffice Math), Calligra Suite (antigo KOffice), Apple's Pages[28] e MS Office 2007, além de software matemáticos como Mathematica, Maple e a versão para Microsoft Windows da Casio ClassPad 300. O navegador W3C / editor Amaya também pode ser mencionado como um editor WYSIWYG MathML.

Firemath, um add-on para Firefox, fornece um editor WYSIWYG MathML.

A maioria dos editores apenas produzem Presentation MathML. O editor de fórmulas MathDox é um editor OpenMath que também fornece apresentação e conteúdo MathML. O Formulator MathML Weaver usa o estilo WYSIWYG para editar apresentação, conteúdo e marcações de MathML.

Reconhecimento da caligrafia

Web Equation pode converter manuscritos para MathML. Windows 7 tem uma ferramenta interna chamada de Math Input Panel, que converte manuscrito para MathML[29] (ao contrário do pacote do Microsoft Office, o Math Input Panel não usa o formato OMML, mas os aplicativos do Microsoft Office podem converter / colar do MathML em seu formato interno preferido). Embora a tecnologia subjacente também seja exposta para uso em outros aplicativos como um controle ActiveX chamado de Math Input Control[30], deve–se notar que o ActiveX está desativado e não terá necessariamente suporte em futuros softwares da Microsoft como seu navegador Microsoft Edge.

Conversão

Há várias utilidades para conversão para e de MathML que estão disponíveis. W3.org mantém uma lista de softwares relacionado a MathML para download.[31]

Conversão web

ASCIIMathML[32] fornece uma biblioteca JavaScript para reescrever uma sintaxe de texto parecida com wiki usada em páginas web em MathML, que funciona em navegadores baseados em Gecko e no Internet Explorer com MathPlayer. LaTeXMathML[33] faz o mesmo para o subconjunto da sintaxe matemática LaTeX padrão. A sintaxe ASCIIMathML também poderia ser bastante familiar para qualquer pessoa acostumada às calculadoras científicas eletrônicas.

MathJax, uma biblioteca de JavaScript para renderização de fórmulas matemáticas expressas em LaTeX, AsciiMath ou MathML, também pode ser usada para traduzir LaTeX ou AsciiMath em MathML para interpretação direta pelo navegador.[34][35]

Equation Server para .NET de soft4science pode ser usado no lado do servidor (ASP.NET) para TeX-Math[36] (subconjunto da sintaxe matemática do LaTeX) para a conversão MathML e também pode criar imagens bitmap (png, jpg, gif, entre outras) a partir da entrada TeX-Math ou MathML.

JqMath[37] é um módulo de JavaScript que converte dinamicamente uma sintaxe simples parecida com TeX para MathML se o navegador o suportar, senão para simples HTML e CSS.

LaTeXML é uma reimplementação completa do sistema de tipografia TeX, capaz de converter documentos LaTeX em HTML e em ePub, opcionalmente usando MathML ou convertendo expressões matemáticas em imagens png ou svg. Esta é uma das poucas ferramentas que também fornecem saída Content MathML de conteúdo opcional para as equações convertidas.

Suporte para desenvolvedores de software

O suporte para o formato MathML acelera o desenvolvimento de aplicativos de software em vários tópicos como educação assistida por computador (ensino à distância, livros didáticos eletrônicos, entre outros materiais de sala de aula), a criação automatizada de relatórios, sistemas de álgebra computacional, ferramentas de criação, treinamento e publicação tanto para a web quanto para desktop, entre muitas outras aplicações para matemática, ciências, negócios, economia. Vários fornecedores de software propõem uma edição de componentes de seus editores MathML, fornecendo o caminho mais fácil para os desenvolvedores de software inserirem funcionalidades de renderização, edição e processamento matemáticas em suas aplicações. Por exemplo, o Formulator ActiveX Control do Laboratório Hermitech pode ser incorporado a um aplicativo como o editor MathML. A Design Science oferece um kit de ferramentas para a construção de páginas web que incluem matemática interativa (MathFlow Developers Suite[38]).

Outros padrões

Outro padrão chamado de OpenMath que foi projetado (principalmente pelas mesmas pessoas que criaram o Content MathML) mais especificamente para arquivar fórmulas semanticamente também pode ser usado para complementar MathML. Os dados do OpenMath podem ser embedados em MathML usando o elemento <annotation-xml encoding="OpenMath"> . Os dicionários de conteúdo OpenMath podem ser usados ​​para definir o significado dos elementos <csymbol> . A expressão seguinte define P1(x) como o primeiro polinômio de Legendre:

<apply>
  <csymbol encoding="OpenMath" definitionURL="http://www.openmath.org/cd/contrib/cd/orthpoly1.xhtml#legendreP">
    <msub><mi>P</mi><mn>1</mn></msub>
  </csymbol>
  <ci>x</ci>
</apply>

O formato OMDoc foi criado para marcação de estruturas matemáticas maiores que fórmulas, de declarações como definições, teoremas, provas ou exemplos a teorias e livros. As fórmulas em documentos OMDoc podem ser escritas em Content MathML ou em OpenMath. Elas são convertidos para Presentation MathML para apresentação.

O Office Open XML (OOXML) padrão SO/IEC define uma sintaxe de matemática XML diferente, derivada de produtos do Microsoft Office. Entretanto, ela é parcialmente compatível por meio de XSL Transformations relativamente simples.[39]

Referências

  1. «A MathML for CSS Profile». W3C. 7 June 2011. Consultado em 25 July 2013  Verifique data em: |acessodata=, |data= (ajuda)
  2. a b Mathematical Markup Language Version 3.0 W3C Recommendation. W3.org. Retrieved on 9 May 2012.
  3. MathML Version 3.0 2nd Edition. W3.org. Retrieved on 8 July 2014.
  4. W3C MathML 3.0 Approved as ISO/IEC International Standard. W3.org. Retrieved on July 12, 2015.
  5. Steven DeRose. The SGML FAQ Book: Understanding the Relationship of SGML and XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8.
  6. Canonical S-expressions#cite note-0
  7. Buswell, Steven; Devitt, Stan; Diaz, Angel; et al. (7 July 1999). «Mathematical Markup Language (MathML) 1.01 Specification (Abstract)». Consultado em 26 September 2006. While MathML is human-readable it is anticipated that, in all but the simplest cases, authors will use equation editors, conversion programs, and other specialized software tools to generate MathML.  Verifique data em: |acessodata=, |data= (ajuda)
  8. Wang, Frédéric, Mozilla MathML Status, Mozilla 
  9. Sidje, Roger B., Authoring MathML for Mozilla, Mozilla 
  10. Bug 3251 – Implement MathML (master bug), WebKit  . . . (However, "see also") https://trac.webkit.org/wiki/MathML%20Status
  11. MathML Support Coming To Chrome, BrowserFame, consultado em 16 October 2012  Verifique data em: |acessodata= (ajuda)
  12. Stable Chrome 24 supports MathML and closes security holes, The H Online, consultado em 11 January 2013  Verifique data em: |acessodata= (ajuda)
  13. Stable Channel Update, consultado em 7 April 2013  Verifique data em: |acessodata= (ajuda)
  14. Frédéric Wang. «Funding MathML Developments in Gecko and WebKit - Blog de Frédéric». maths-informatique-jeux.com. Consultado em 22 November 2014  Verifique data em: |acessodata= (ajuda)
  15. McCathieNevile, Charles (27 September 2007), Can Kestrels do Math? MathML support in Opera Kestrel, Opera  Verifique data em: |data= (ajuda)
  16. Olsen, Tommy A. (16 November 2007), Even more work, Opera, cópia arquivada em 18 November 2007  Verifique data em: |arquivodata=, |data= (ajuda)
  17. MathML – The Opera MathML blog. My.opera.com (1 November 2007). Retrieved on 9 May 2012.
  18. UserJS for MathML 2.0. My.opera.com. Retrieved on 9 May 2012.
  19. Opera 14 beta for Android is out, cópia arquivada em 8 de março de 2013 
  20. MathPlayer – version history 
  21. «Microsoft cripples the display of math in IE10 & 11». dessci.com. Consultado em 22 November 2014  Verifique data em: |acessodata= (ajuda)
  22. Bug 30526 – MathML support for Konqi 
  23. Vismor, Timothy, Viewing Mathematics on the Internet, consultado em 13 April 2011  Verifique data em: |acessodata= (ajuda)
  24. Peter Krautzberger. «MathML forges on». oreilly.com. Consultado em 22 November 2014  Verifique data em: |acessodata= (ajuda)
  25. == Referências em contribuições recentes ==

    Olá, MathML. Boas-vindas à Wikipédia! Alerto que algumas contribuições que realizou não possuem fontes confiáveis e independentes, conforme orienta a política de verificabilidade da Wikipédia, por isso seu texto foi removido, modificado ou marcado com o uso de predefinições (como {{sem-fontes}} e {{carece de fontes}}). Para adicionar referências é necessário colocar <ref>referência</ref> após sua edição, substituindo o termo referência pela bibliografia ou ligação de onde obteve a informação que adicionou, de acordo com as orientações de formatação do livro de estilo. Encontre fontes: ABW  • CAPES  • Google (N • L • A).

    Por favor, leia com atenção as políticas e regulamentos apresentados acima, assim seu esforço aqui terá um bom resultado. Se, ao ler a política, lhe surgir alguma dúvida, por favor deixe-me uma mensagem em minha página de discussão e quando eu puder lhe responderei, ou então, pode consultar algum membro do programa de tutoria ou um administrador da Wikipédia. Também pode utilizar o assistente para a criação de artigos, que o guiará passo a passo no processo de criação. Saudações e boa sorte em suas edições.

  26. WIRIS editor page describing the use of MathML. Wiris.com. Retrieved on 9 May 2012.
  27. MathML Software – Editors at W3C. W3.org (24 April 2012). Retrieved on 9 May 2012.
  28. «What's New in Pages for Mac». Apple Support (em inglês). Consultado em 6 de abril de 2017 
  29. «Use Math Input Panel to write and correct math equations». windows.microsoft.com. Consultado em 22 November 2014  Verifique data em: |acessodata= (ajuda)
  30. David Hutchison; Jacques Carette; Claudio Sacerdoti Coen (2009). Intelligent Computer Mathematics: 16th Symposium, Calculemus 2009, 8th International Conference, MKM 2009, Grand Bend, Canada, July 6-12, 2009, Proceedings. [S.l.]: Springer Science & Business Media. p. 29. ISBN 978-3-642-02614-0 
  31. «MathML Implementations». w3.org. Consultado em 22 November 2014  Verifique data em: |acessodata= (ajuda)
  32. ASCIIMathML: Math on the web for everyone. .chapman.edu. Retrieved on 9 May 2012.
  33. LaTeXMathML: a dynamic LaTeX mathematics to MathML converter. Maths.nottingham.ac.uk. Retrieved on 9 May 2012.
  34. MathJax MathML Support. Mathjax.org. Retrieved on 9 May 2012.
  35. Cuellar, Autumn; Topping, Paul (June 2013), «What you need to know about the Maths Stack», ISBN 978-0-9926471-0-0, XML London 2013: 63–68, doi:10.14337/XMLLondon13.Cuellar01  Verifique data em: |data= (ajuda)
  36. TeX-Math. TeX-Math. Retrieved on 9 May 2012.
  37. jqMath – Put Math on the Web. Mathscribe.com. Retrieved on 15 July 2015.
  38. MathFlow. Dessci.com. Retrieved on 9 May 2012.
  39. David Carlisle (9 May 2007), XHTML and MathML from Office 2007, David Carlisle, consultado em 20 September 2007  Verifique data em: |acessodata=, |data= (ajuda)

Leituras adicionais

Ligações externas