MathML


El 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 de una norma ISO ISO / IEC 40314 desde 2015.

MathML 1 fue lanzado 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 publicó en julio de 1999 y la versión 2.0 apareció en febrero de 2001.

En octubre de 2003, el Grupo de Trabajo de Matemáticas del W3C publicó como versión final la segunda edición de MathML Versión 2.0.

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 que se completó la Recomendación de espacio de nombres, y para el uso de XML, los elementos deben estar en el espacio de nombres con URI de espacio de nombres http://www.w3.org/1998/Math/MathML. Cuando se utiliza MathML en HTML (a diferencia de XML), el analizador 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. Una recomendación de A MathML para perfil CSS se publicó más tarde el 7 de junio de 2011; [3] este es un subconjunto de MathML adecuado para el formato CSS. Otro subconjunto, Strict Content MathML , proporciona un subconjunto de contenido MathML 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 que asocia variables vinculadas ( ) a expresiones, por ejemplo, un índice de suma. El nuevo elemento permite compartir estructuras. [4]

El desarrollo de MathML 3.0 pasó por varias etapas. En junio de 2006, el W3C recuperó el grupo de trabajo de MathML para producir una recomendación de MathML 3 hasta febrero de 2008 y en noviembre de 2008 extendió la carta 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 una "Recomendación propuesta" en lugar de un borrador. [4]

La segunda edición de MathML 3.0 se publicó como Recomendación del W3C el 10 de abril de 2014. [2] La especificación fue aprobada como norma internacional ISO / IEC 40314: 2015 el 23 de junio de 2015. [5]

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 incrustado en ellas se pueden ver como páginas web normales con muchos navegadores, pero los usuarios con discapacidad visual también pueden hacer que se les lea el mismo MathML mediante el uso de lectores de pantalla (por ejemplo, utilizando 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 recientes de JAWS admiten la voz MathML y ​​la salida en braille. [6]

Presentación MathML

Presentación MathML se centra en la visualización de una ecuación y tiene alrededor de 30 elementos. Todos los nombres de los elementos comienzan con m. Una expresión Presentation MathML se construye a partir de tokens que se combinan utilizando elementos de nivel superior, que controlan su diseño (también hay alrededor de 50 atributos, que controlan principalmente los detalles finos).

Los elementos de token generalmente solo contienen caracteres (no otros elementos). Incluyen:

  • x - identificadores;
  • + - operadores;
  • 2 - números.
  • non zero - texto.

Sin embargo, tenga en cuenta que estos elementos de token se pueden usar como puntos de extensión, lo que permite el marcado en los idiomas host. MathML en HTML5 permite la mayoría de las marcas HTML en línea en mtext y non zeroes conforme, con la marca HTML que se utiliza dentro de MathML para marcar el texto incrustado (haciendo que la primera palabra en negrita en este ejemplo).

Estos se combinan utilizando elementos de diseño, que generalmente contienen solo elementos. Incluyen:

  • - una fila horizontal de artículos;
  • , y otros - superíndices, límites por encima y por debajo de operadores como sumas, etc .;
  • - fracciones;
  • y - raíces;
  • - rodear el contenido con vallas, como paréntesis.

Como es habitual en HTML y XML, hay muchas entidades disponibles para especificar símbolos especiales por nombre, como πy &RightArrow. Una característica interesante de MathML es que también existen entidades para expresar operadores normalmente invisibles, como &InvisibleTimes(o la abreviatura &it) para la multiplicación implícita. Ellos son:

  • APLICACIÓN DE LA FUNCIÓN U + 2061;
  • U + 2062 TIEMPOS INVISIBLES;
  • SEPARADOR INVISIBLE U + 2063;
  • U + 2064 INVISIBLE PLUS.

La especificación completa de las entidades MathML [7] está estrechamente coordinada con las especificaciones correspondientes para su uso con HTML y XML en general. [8]

Así, la expresión requiere dos elementos de diseño: uno para crear la fila horizontal general y otro para el exponente en superíndice. Incluyendo solo los elementos de diseño y los tokens desnudos (aún no marcados), la estructura se ve así:

  a & InvisibleTimes;   x 2  + b & InvisibleTimes; X + c 

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:

    a    & InvisibleTimes;     x   2    +   b   & InvisibleTimes;   x    +   c   

Un documento MathML válido normalmente consta de la declaración XML, la declaración DOCTYPE y el elemento del documento. El cuerpo del documento luego contiene expresiones MathML que aparecen en 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 consta solo del ejemplo de MathML anterior:

 xml version = "1.0" encoding = "UTF-8"?>  "http://www.w3.org/Math/DTD /mathml2/mathml2.dtd ">  xmlns = " http://www.w3.org/1998/Math/MathML " >     a    & InvisibleTimes;     x   2    +   b   & InvisibleTimes;   x    +   c    

Contenido MathML

Content MathML se centra en la semántica, o el significado, de la expresión más que en su diseño. El elemento central del contenido MathML es el elemento que representa la aplicación de la función. La función que se está aplicando es el primer elemento secundario y sus operandos o parámetros son los elementos secundarios restantes. Content MathML utiliza solo unos pocos atributos.

Los tokens como identificadores y números se marcan individualmente, al igual que para Presentation MathML, pero con elementos como ciy cn. En lugar de ser simplemente otro tipo de ficha, los operadores están representados por los elementos específicos, cuya semántica matemática se sabe que MathML: times, power, etc. Hay más de un centenar de diferentes elementos para diferentes funciones y operadores. [9]

Por ejemplo, representaxy representax5. Los elementos que representan operadores y funciones son elementos vacíos, porque sus operandos son los otros elementos debajo del contenedor .

La expresion podría representarse como

           a        x    2            b    x      c    

Content MathML es casi isomórfico a las expresiones en un lenguaje funcional como Scheme . ...equivale a Scheme (...), y los muchos elementos de operador y función 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  ( multiplicado por  a  ( potencia  x  2 ))  ( multiplicado por  b  x )  c )

Esto refleja la estrecha relación conocida de largo entre las estructuras de elementos XML, y LISP o el esquema S-expresiones . [10] [11]

Anotación de Wikidata en Content MathML

Según la Sociedad OM, [12] Los diccionarios de contenido OpenMath pueden emplearse como colecciones de símbolos e identificadores con declaraciones de su semántica: nombres, descripciones y reglas. Como se propone en [13], la base de conocimiento semántico Wikidata [14] se puede utilizar como Diccionario de contenido OpenMath para vincular elementos semánticos de una fórmula matemática con elementos de Wikidata únicos e independientes del idioma.

La conocida fórmula cuadrática :

se marcaría usando la 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}} sobre 2a

en Apache OpenOffice Math y LibreOffice Math como este (los tres son válidos):

x = {- b plusminus sqrt {b ^ 2 - 4 ac}} sobre {2 a}x = {- b + - sqrt {b ^ 2 - 4ac}} sobre {2a}x = {- b ± sqrt {b ^ 2 - 4ac}} sobre {2a}

en AsciiMath así:

x = (- b + - raíz cuadrada (b ^ 2 - 4ac)) / (2a)

La ecuación anterior podría representarse en Presentation MathML como un árbol de expresión compuesto por elementos de diseño como elementos mfrac o msqrt :

 mode = "display"  xmlns = "http://www.w3.org/1998/Math/MathML" >       x    =   < mfrac>     form = "prefix" > & minus;    b    & pm;       b   2    & minus;    4   & it;   a   & it;   c          2    & it;    a          encoding = "application / x-tex" >  x = \ frac {-b \ pm \ sqrt {b ^ 2-4ac}} {2a}    encoding = "StarMath 5.0" > x = {- b plusminus sqrt {b ^ 2 - 4 ac}} sobre {2 a}     . ->   

Este ejemplo usa el elemento, que puede usarse 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 LaTeX . El encodingcampo 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 menos compacto que TeX, la estructura XML promete hacerlo ampliamente utilizable y permite la visualización instantánea en aplicaciones como navegadores web y facilita una interpretación de su significado en productos de software matemático. MathML no está diseñado para ser escrito o editado directamente por humanos. [15]

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+ (compatibilidad incompleta) pueden mostrar Presentation MathML incrustado en XHTML.

 xml version = "1.0" encoding = "UTF-8"?>  "http://www.w3.org/ Math / DTD / mathml2 / xhtml-math11-f.dtd ">  xmlns = " http://www.w3.org/1999/xhtml "  xml: lang = " en " >     Ejemplo de MathML incrustado en un archivo XHTML    name = "description"  content = "Ejemplo de MathML incrustado en un archivo XHTML" />       Ejemplo de MathML incrustado en un archivo XHTML < / h1>  

El área de un círculo es xmlns = "http://www.w3.org/1998/Math/MathML" > & # x03C0; & # x2062; -> r 2 .