Matemáticas ML
Lenguaje de marcado matemático (MathML) es un lenguaje de marcado matemático, una aplicación de XML para describir notaciones matemáticas y capturar tanto su estructura como su contenido. Su objetivo es integrar fórmulas matemáticas en páginas de la World Wide Web y otros documentos. Es parte de HTML5 y es un estándar ISO/IEC ISO/IEC 40314 desde 2015.
Historia
MathML 1 se publicó como recomendación del W3C en abril de 1998 como el primer lenguaje XML recomendado por el W3C. La versión 1.01 del formato se lanzó en julio de 1999 y la versión 2.0 apareció en febrero de 2001.
En octubre de 2003, el W3C Math Working Group publicó la segunda edición de MathML versión 2.0 como versión final.
MathML se diseñó originalmente antes de la finalización de los espacios de nombres XML. Sin embargo, se le asignó un espacio de nombres inmediatamente después de completar la Recomendación de espacios de nombres y, para el uso de XML, los elementos deben estar en el espacio de nombres con la URL de espacio de nombres http://www.w3.org/1998/Math/MathML. Cuando se utiliza MathML en HTML (a diferencia de XML), el analizador de HTML infiere automáticamente este espacio de nombres y no es necesario especificarlo en el documento.
MathML versión 3
La versión 3 de la especificación MathML se publicó como recomendación del W3C el 20 de octubre de 2010. Posteriormente, el 7 de junio de 2011 se publicó una recomendación de A MathML para perfil CSS; este es un subconjunto de MathML adecuado para el formato CSS. Otro subconjunto, MathML de contenido estricto, proporciona un subconjunto de MathML de contenido con una estructura uniforme y está diseñado para ser compatible con OpenMath. Otros elementos de contenido se definen en términos de una transformación al subconjunto estricto. Los nuevos elementos de contenido incluyen <bind>
que asocia variables vinculadas (<bvar>
) a expresiones, por ejemplo, un índice de suma. El nuevo elemento <share>
permite compartir estructuras.
El desarrollo de MathML 3.0 pasó por varias etapas. En junio de 2006, el W3C reorganizó el grupo de trabajo de MathML para producir una recomendación de MathML 3 hasta febrero de 2008 y en noviembre de 2008 amplió el estatuto hasta abril de 2010. En junio de 2009 se publicó un sexto borrador de trabajo de la revisión de MathML 3. La versión del 10 de agosto de 2010 3 se graduaron para convertirse en "Recomendación propuesta" en lugar de un borrador.
La segunda edición de MathML 3.0 se publicó como recomendación del W3C el 10 de abril de 2014. La especificación se aprobó como norma internacional ISO/IEC 40314:2015 el 23 de junio de 2015.
Presentación y semántica
MathML se ocupa no solo de la presentación sino también del significado de los componentes de la fórmula (la última parte de MathML se conoce como "Content MathML"). Debido a que el significado de la ecuación se conserva separado de la presentación, la forma en que se comunica el contenido puede dejarse en manos del usuario. Por ejemplo, las páginas web con MathML incorporado se pueden ver como páginas web normales con muchos navegadores, pero los usuarios con problemas de visión también pueden leer el mismo MathML mediante el uso de lectores de pantalla (por ejemplo, usando el complemento MathPlayer para Internet Explorer o Firefox, Opera 9.50 build 9656+ o la extensión Fire Vox para Firefox). Las versiones más nuevas de JAWS son compatibles con la expresión de MathML, así como con la salida en braille.
Presentación MathML
La presentación MathML se centra en la visualización de una ecuación y tiene alrededor de 30 elementos. Los elementos' todos los nombres comienzan con m
. Una expresión de Presentation MathML se construye a partir de tokens que se combinan usando elementos de nivel superior, que controlan su diseño (también hay alrededor de 50 atributos, que controlan principalmente los detalles finos).
Los elementos token generalmente solo contienen caracteres (no otros elementos). Incluyen:
x
– identificadores;+
– operadores;2
- números.non zero
– texto.
Tenga en cuenta, sin embargo, que estos elementos de token se pueden usar como puntos de extensión, lo que permite el marcado en los idiomas principales.
MathML en HTML5 permite la mayoría de las marcas HTML en línea en mtext y <mtext><b>no</b> zero</mtext>
es conforme, con el marcado HTML que se usa dentro de MathML para marcar el texto incrustado (en este ejemplo, la primera palabra está en negrita).
Estos se combinan usando elementos de diseño, que generalmente contienen solo elementos. Incluyen:
– una fila horizontal de elementos;
,
, y otros - superscriptos, límites sobre y bajo operadores como sumas, etc.;
– fracciones;
y
– raíces;
– contenido circundante con cercas, como paréntesis.
Como es habitual en HTML y XML, hay muchas entidades disponibles para especificar símbolos especiales por nombre, como π
y &Flecha derecha;
. Una característica interesante de MathML es que también existen entidades para expresar operadores normalmente invisibles, como ⁢
(o la abreviatura ⁢
) para la multiplicación implícita. Ellos son:
- U+2061 FUNCTION APPLICATION;
- U+2062 TIEMPOS INVISIBLES;
- U+2063 SEPARATOR INVISIBLE;
- U+2064 INVISIBLE PLUS.
La especificación completa de las entidades de MathML está estrechamente coordinada con las especificaciones correspondientes para su uso con HTML y XML en general.
Así, la expresión ax2+bx+c{displaystyle ax^{2}+bx+c} requiere dos elementos de diseño: uno para crear la fila horizontal general y uno para el exponente superscripto. Incluyendo sólo los elementos de diseño y las tokens desnudas (aún no marcadas), la estructura se ve así:
- No.a " Tiempos invisibles; Identificacionesx 2■/msup+ b " Tiempos invisibles; x
+ c
■/mrow
Sin embargo, los tokens individuales también deben identificarse como identificadores (mi), operadores (mo) o números (mn). Al agregar el marcado del token, el formulario completo termina como
- No. Identificadoa■/mi contacto ▪mo título" Tiempos invisibles;■/mo título - No.x" Segmento "2> > ▪mo título+" Seguido "b" Secundaria "" Tiempos invisibles;" Seguido "x■/mi contacto ▪mo título+" Seguido "c■/mi contacto ■/mrow
Un documento MathML válido generalmente consiste en la declaración XML, la declaración DOCTYPE y el elemento del documento. El cuerpo del documento contiene expresiones MathML que aparecen en <math> elementos según sea necesario en el documento. A menudo, MathML se integrará en documentos más generales, como HTML, DocBook u otros esquemas XML. Aquí se muestra un documento completo que consiste solo en el ejemplo de MathML anterior:
¿Según la versión xml="1.0" encoding="UTF-8"?¡Seguido! DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0///EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd"Identificada xmlns="http://www.w3.org/1998/Math/MathML"■ - No. Identificadoa■/mi contacto ▪mo título" Tiempos invisibles;■/mo título - No.x" Segmento "2> > ▪mo título+" Seguido "b" Secundaria "" Tiempos invisibles;" Seguido "x■/mi contacto ▪mo título+" Seguido "c■/mi contacto ■/mrowIdentificado/math
Contenido MathML
Content MathML se centra en la semántica o el significado de la expresión en lugar de su diseño. El elemento central de Content MathML es el elemento <apply>
que representa la aplicación de funciones. La función que se aplica es el primer elemento secundario bajo <apply>
, y sus operandos o parámetros son los elementos secundarios restantes. Content MathML usa solo unos pocos atributos.
Los tokens, como los identificadores y los números, se marcan individualmente, al igual que en Presentation MathML, pero con elementos como ci
y cn
. En lugar de ser simplemente otro tipo de token, los operadores están representados por elementos específicos, cuya semántica matemática es conocida por MathML: veces
, power
, etc. Hay más de cien elementos diferentes para diferentes funciones y operadores.
Por ejemplo, x
representaciones pecado ()x){displaystyle sin(x)} y x5
representaciones x+5{displaystyle x+5}. Los elementos que representan a operadores y funciones son elementos vacíos, porque sus operandos son los otros elementos bajo el contenido .
La expresión ax2+bx+c{displaystyle ax^{2}+bx+c} podría estar representado
Identificado ■apply ■plus/ ■apply > > ■cia■/ci ■apply " Poder " ■cix■/ci Identificado2cn título ■/apply ■/apply ■apply > > ■cib■/ci ■cix■/ci ■/apply ■cic■/ci ■/applyIdentificado/math
El contenido MathML es casi isomorfo a las expresiones en un lenguaje funcional como Scheme. <apply>...</apply>
equivale al (...)
, y los numerosos elementos de función y operador equivalen a funciones de Scheme. Con esta transformación literal trivial, además de desetiquetar los tokens individuales, el ejemplo anterior se convierte en:
()más ()veces a ()poder x 2) ()veces b x) c)
Esto refleja la estrecha relación conocida desde hace mucho tiempo entre las estructuras de elementos XML y las expresiones LISP o Scheme S.
Anotación de Wikidata en Content MathML
Según la Sociedad OM, los diccionarios de contenido de OpenMath se pueden emplear como colecciones de símbolos e identificadores con declaraciones de su semántica: nombres, descripciones y reglas. Un documento de 2018 presentado en la conferencia SIGIR propuso que la base de conocimiento semántico Wikidata podría usarse como un diccionario de contenido de OpenMath para vincular elementos semánticos de una fórmula matemática con elementos de Wikidata únicos e independientes del idioma.
Ejemplo y comparación con otros formatos
La conocida fórmula cuadrática:
- x=− − b± ± b2− − 4ac2a{displaystyle x={frac {-bpm {sqrt {b} {2}4ac}} {2a}}} {2a}}} {c}}}} {c}}}}}}}}}} {c}}}}}} {c}}}}}}}}}} {c}}}}}}}}}}}}}}} {c}}}}}}}}}}}}}}}}} {}}}}}}}}} {}}}}}}}}}}}}}}}}}}}}}} {}}}}}}}}}}}}}}}}}}}}}} {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
se marcaría usando una sintaxis de LaTeX como esta:
x frac{}- b pm sqrt{}b^2 - 4ac} {}2a}
en troff/eqn así:
x = {-b +- sqrt{b sup 2 – 4ac} over 2a
en Apache OpenOffice Math y LibreOffice Math así (los tres son válidos):
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}
en AsciiMath así:
x = (-b +- sqrt(b^2 - 4ac))/(2a)
La ecuación anterior podría representarse en Presentation MathML como un árbol de expresión formado por elementos de diseño como elementos mfrac o msqrt:
Identificada modo="display" xmlns="http://www.w3.org/1998/Math/MathML"■ " Semántica " - No. Identificadox■/mi contacto ▪mo título=■/mo título Identificado - No. ▪mo form="prefijo"■" Menos;■/mo título Identificadob■/mi contacto ▪mo título" pm;■/mo título ▪msqrt - No.b" Segmento "2> > ▪mo título" Menos;■/mo título Identificado4■/mn título indicamo título"" Seguido "a" Secundaria """ Seguido "c■/mi contacto ■/msqrt ■/mrow - No. Identificado2■/mn título ▪mo título"■/mo título Identificadoa■/mi contacto ■/mrow ■/mfrac ■/mrow Notación encoding="application/x-tex"■¡Seguido! TeX...x = frac{-bpmsqrt{b^2-4ac}{2a}
■/anotación Notación encoding="StarMath 5.0"■x = {-b plusminus sqrt {b^2 - 4 ac} over {2 a}
■/anotación ¡Seguido! Se pueden escribir más anotaciones: aplicación/x-troff-eqn para eqn, aplicación/x-asciimath para AsciiMath... -- ¡Seguido! Matemáticas semánticas ML ir debajo de la codificación de xml de anotación = "MathML-Content". -- ▪ SemánticaIdentificado/math
Este ejemplo usa el elemento <annotation>
, que se puede usar para incrustar una anotación semántica en formato no XML, por ejemplo, para almacenar la fórmula en el formato usado por un editor de ecuaciones como StarMath o el marcado usando la sintaxis de LaTeX. El campo encoding
suele ser de tipo MIME, aunque la mayoría de las codificaciones de ecuaciones no tienen tal registro; en tal caso, se puede utilizar texto de forma libre.
Aunque es menos compacto que TeX, la estructura XML promete hacerlo ampliamente utilizable, permite la visualización instantánea en aplicaciones como navegadores web y facilita la interpretación de su significado en productos de software matemático. MathML no está destinado a ser escrito o editado directamente por humanos.
Incrustación de MathML en archivos HTML/XHTML
MathML, al ser XML, se puede incrustar dentro de otros archivos XML, como archivos XHTML, utilizando espacios de nombres XML. Los navegadores como Firefox 3+ y Opera 9.6+ (soporte incompleto) pueden mostrar Presentation MathML incrustado en XHTML.
¿Según la versión xml="1.0" encoding="UTF-8"?¡Seguido! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 más 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 ▪ títuloEjemplo de matemáticas ML incrustado en un archivo XHTML■/título ▪meta nombre="descripción" contenido="Ejemplo de MathML incrustado en un archivo XHTML"/ Identificado/cabeza ▪ ■h1Ejemplo de matemáticas ML incrustado en un archivo XHTML■/h1 título IdentificadoEl área de un círculo es
Identificada xmlns="http://www.w3.org/1998/Math/MathML"■ Identificado>#x03C0;¡No!■/mi contacto ▪mo título>#x2062;¡Seguido! " Tiempos invisibles "■/mo título Identificaciones Identificador■/mi contacto Identificado2■/mn título ■/msup Identificado/math.
Identificado/p Identificado/cuerpoIdentificado/html
Inline MathML también es compatible con archivos HTML5 en las versiones actuales de WebKit (Safari y JavaFX/WebView), Gecko (Firefox). No hay necesidad de especificar espacios de nombres como en XHTML.
¡Atención! DOCTYPE html.html lang="en"■ .cabeza■ .meta charset="utf-8"■ .Título■Ejemplo de matemáticas ML incrustado en un archivo HTML5c)Título■ c)cabeza■ .cuerpo■ .h1■Ejemplo de matemáticas ML incrustado en un archivo HTML5c)h1■ .p■El área de un círculo es
.matemáticas■ .#■πc)#■ .mo■" Tiempos invisibles;c)mo■ .msup■ .#■rc)#■ .mn■2c)mn■ c)msup■ c)matemáticas■.
c)p■ c)cuerpo■c)html■
Soporte del navegador
De los principales navegadores web, los navegadores basados en Gecko (por ejemplo, Firefox) tienen el soporte nativo más completo para MathML.
Si bien el motor de diseño de WebKit tiene una versión de desarrollo de MathML, esta característica solo está disponible en la versión 5.1 y superior de Safari. Estaba disponible en Chrome hasta Chrome 24, momento en el que se eliminó. En ese momento, Google eliminó el soporte de MathML alegando que los problemas de seguridad de la arquitectura y el bajo uso no justificaban su tiempo de ingeniería. En enero de 2023, se reintrodujo la compatibilidad con MathML en Chrome en la versión 109 debido al trabajo de Igalia. A partir de octubre de 2013, la implementación de WebKit/Safari tiene numerosos errores.
JavaFX/WebView. También basado en WebKit, el navegador web integrado JavaFX es compatible con MathML a partir de las versiones JavaFX 8 Update 192 y JavaFX 11. El soporte está roto, en versiones anteriores de JavaFX 8, JavaFX 9 y JavaFX 10.
Opera, entre la versión 9.5 y la 12, es compatible con MathML para el perfil CSS, pero no puede colocar los signos diacríticos correctamente. Antes de la versión 9.5, requería JavaScript de usuario u hojas de estilo personalizadas para emular la compatibilidad con MathML. A partir de Opera 14, Opera deja de ser compatible con MathML al cambiar al motor Chromium 25.
Microsoft Edge no es compatible con MathML, ni hay planes para agregar soporte.
Internet Explorer no es compatible con MathML de forma nativa. Se puede agregar soporte para IE6 a IE9 instalando el complemento MathPlayer. IE10 tiene algunos errores de bloqueo con MathPlayer y Microsoft decidió deshabilitar completamente en IE11 la interfaz de complemento binario que necesita MathPlayer. MathPlayer tiene una licencia que puede limitar su uso o distribución en páginas web comerciales y software. Esta licencia también puede prohibir el uso o la distribución del complemento MathPlayer para mostrar contenido HTML a través del control WebBrowser en software comercial.
Actualmente, Konqueror basado en KHTML no proporciona soporte para MathML.
La calidad de representación de MathML en un navegador depende de las fuentes instaladas. El proyecto STIX Fonts ha lanzado un conjunto completo de fuentes matemáticas bajo una licencia abierta. La fuente Cambria Math suministrada con Microsoft Windows tenía un soporte un poco más limitado.
Según un miembro del equipo de MathJax, ninguno de los principales fabricantes de navegadores pagó a ninguno de sus desarrolladores por el trabajo de representación de MathML; cualquier apoyo que exista es abrumadoramente el resultado del tiempo/trabajo voluntario no remunerado.
En 2015, se fundó la Asociación MathML para respaldar la adopción del estándar MathML.
Navegador | MathML |
---|---|
Amaya | Sí. |
AOL Explorer | No |
Avant | No |
Arora | Sí. |
Basilisk | Sí. |
Camino | Sí. |
Cromo, Chrome | Sí. |
Dillo | No |
Dooble | Sí. |
ELinks | No |
Falkon | No |
Flock | Sí. |
Galeon | Sí. |
iCab | No |
Internet Explorer | No |
Internet Explorer para Mac | No |
K-Meleon | Sí. |
Konqueror | No |
Enlaces | No |
Lunascape | Sí. |
Lynx | No |
Maxthon | No |
Microsoft Edge | Sí. |
Midori | No |
Mosaic | No |
Mozilla | Sí. |
Mozilla Firefox | Sí. |
Netscape | Sí. |
Navegador de Netscape | Depende |
Netscape Navigator | No |
Netscape Navigator 9 | Sí. |
NetSurf | No |
OmniWeb | No |
Opera | Sí. |
Otter Browser | Sí. |
Pale Moon | Sí. |
Polaridad | No |
qutebrowser | No |
Safari | Sí. |
SeaMonkey | Sí. |
Shiira | No |
Sleipnir | No |
surf | No |
Navegador de antorcha | No |
Web | Sí. |
WorldWideWeb | No |
w3m | No |
Otras normas
Otro estándar llamado OpenMath que ha sido diseñado (en gran parte por las mismas personas que idearon Content MathML) más específicamente para almacenar fórmulas semánticamente también se puede usar para complementar MathML. Los datos de OpenMath se pueden incrustar en MathML utilizando la codificación <annotation-xml ="OpenMath">
elemento. Los diccionarios de contenido de OpenMath se pueden usar para definir el significado de <csymbol>
elementos. Lo siguiente definiría P1(x) como el primer polinomio de Legendre
■apply ▪csymbol encoding="OpenMath" DefiniciónURL="http://www.openmath.org/cd/contrib/cd/orthpoly1.xhtml#legendreP"■ - No.P" Segmento "1> > Identificado/csymbol ■cix■/ci■/apply
El formato OMDoc se creó para el marcado de estructuras matemáticas más grandes que las fórmulas, desde enunciados como definiciones, teoremas, demostraciones o ejemplos, hasta teorías y libros de texto. Las fórmulas en los documentos OMDoc se pueden escribir en Content MathML o en OpenMath; para la presentación, se convierten a Presentation MathML.
El estándar ISO/IEC Office Open XML (OOXML) define una sintaxis matemática XML diferente, derivada de los productos de Microsoft Office. Sin embargo, es parcialmente compatible a través de transformaciones XSL relativamente simples.
Contenido relacionado
Submarino alemán U-20 (1936)
IEEE754-1985
Grok