stringtranslate.com

MatemáticasML

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, y es uno de varios lenguajes de marcado matemático . Su objetivo es integrar de forma nativa fórmulas matemáticas en páginas de la World Wide Web y otros documentos. Es parte de HTML5 y está estandarizado por ISO/IEC desde 2015. [1]

Historia

Después de algunos experimentos en el navegador Arena basados ​​en propuestas de marcado matemático en HTML, [4] 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 lanzó en julio de 1999 y la versión 2.0 apareció en febrero de 2001. Las implementaciones de la especificación aparecieron en Amaya 1.1 , Mozilla 1.0 y Opera 9.5 . [5] [6] En octubre de 2003, el Grupo de Trabajo de Matemáticas del W3C 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 que se completó 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 del 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. [7]

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 ; [8] este es un subconjunto de MathML adecuado para 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 <bind>los que asocian variables vinculadas ( <bvar>) a expresiones, por ejemplo, un índice de suma. El nuevo <share>elemento permite compartir estructuras. [9]

El desarrollo de MathML 3.0 pasó por varias etapas. En junio de 2006, el W3C volvió a constituir el Grupo de Trabajo de MathML para producir una Recomendación de MathML 3 hasta febrero de 2008, y en noviembre de 2008 extendió el estatuto hasta abril de 2010. En junio de 2009 se publicó un sexto Borrador de Trabajo de la revisión de MathML 3. El 10 de agosto La versión 3 de 2010 pasó a convertirse en una "Recomendación propuesta" en lugar de un borrador. [9] Una implementación de MathML 2 llegó a WebKit aproximadamente al mismo tiempo, [10] seguida de una implementación de Chromium un par de años después, [11] aunque esa implementación se eliminó de Chromium después de menos de un año. [12]

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 estándar internacional ISO/IEC 40314:2015 el 23 de junio de 2015. [13] También en 2015, la Asociación MathML fue fundada para apoyar la adopción del estándar MathML. [14] En ese momento, según un miembro del equipo de MathJax , ninguno de los principales fabricantes de navegadores pagó a ninguno de sus desarrolladores por ningún trabajo de renderizado MathML; cualquier apoyo que existiera fue abrumadoramente el resultado del tiempo/trabajo voluntario no remunerado. [15]

Núcleo de MathML

En agosto de 2021, se publicó una nueva especificación llamada MathML Core, descrita como el "subconjunto central del lenguaje de marcado matemático, o MathML, que es adecuado para la implementación del navegador". [16] MathML Core se distingue de MathML 3.0 al incluir reglas de representación detalladas e integración con CSS, recursos de prueba de soporte de navegador automatizado y centrarse en un subconjunto fundamental de MathML. Se agregó una implementación a Chromium a principios de 2023. [17]

Presentación y semántica.

MathML se ocupa no sólo 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 de comunicar el contenido puede dejarse en manos del usuario. Por ejemplo, las páginas web con MathML integrado se pueden ver como páginas web normales con muchos navegadores, pero a los usuarios con discapacidad visual también se les puede leer el mismo MathML mediante el uso de lectores de pantalla (por ejemplo, usando VoiceOver en Safari ). JAWS desde la versión 16 en adelante admite la voz MathML y ​​la salida braille. [20]

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. [21]

Un documento MathML válido normalmente consta de una declaración XML, una declaración DOCTYPE y un elemento de documento. Luego, el cuerpo del documento contiene expresiones MathML que aparecen en los elementos según sea necesario en el documento. A menudo, MathML se integrará en documentos más generales, como HTML , DocBook u otros formatos basados ​​en XML .<math>

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 de Presentation MathML se construye a partir de tokens que se combinan utilizando elementos de nivel superior, que controlan su diseño. Los detalles más finos de la presentación se ven afectados por cerca de 50 atributos.

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

Sin embargo, tenga en cuenta que estos elementos simbólicos pueden usarse como puntos de extensión, lo que permite el marcado en los idiomas anfitriones. MathML en HTML5 permite la mayoría del marcado HTML en línea en texto m y es conforme, ya que el marcado HTML se utiliza dentro de MathML para marcar el texto incrustado (en este ejemplo, la primera palabra se pone en negrita).<mtext><b>non</b> zero</mtext>

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

Como es habitual en HTML y XML, hay muchas entidades disponibles para especificar símbolos especiales por nombre, como &pi;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:

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

Por lo tanto, la expresión requiere dos elementos de diseño: uno para crear la fila horizontal general y otro para el exponente en superíndice. Sin embargo, los tokens individuales también deben identificarse como identificadores ( ), operadores ( ) o números ( ). Al agregar el marcado del token, el formulario completo termina como<mi><mo><mn>

<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>  

Aquí se muestra un documento completo que consta solo del ejemplo de MathML anterior:

<?xml versión="1.0" codificación="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>   

Contenido MathML

Content MathML se centra en la semántica o significado de la expresión más que en su diseño. Central para el contenido MathML es el <apply>elemento que representa la aplicación de funciones. La función que se aplica es el primer elemento secundario de <apply>y sus operandos o parámetros son los elementos secundarios restantes. Content MathML utiliza sólo unos pocos atributos.

Los tokens como identificadores y números están marcados 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: <times>, <power>, etc. Hay más de cien elementos diferentes para diferentes funciones y operadores. [24]

Por ejemplo, representa y representa . Los elementos que representan operadores y funciones son elementos vacíos, porque sus operandos son los otros elementos bajo el contenedor .<apply><sin/><ci>x</ci></apply><apply><plus/><ci>x</ci><cn>5</cn></apply><apply>

La expresión podría representarse como

<matemáticas > <aplicar> <plus/> <aplicar> <veces/> <ci> a </ci> <aplicar> <potencia/> <ci> x </ci> <cn> 2 </cn> </ aplicar> </apply> <apply> <times/> <ci> b </ci> <ci> x </ci> </apply> <ci> c </ci> </apply> </math>

Contenido MathML es casi isomorfo a expresiones en un lenguaje funcional como Scheme y otros dialectos de Lisp . equivale a Scheme , y los numerosos elementos de operador y función equivalen a funciones de Scheme. Con esta trivial transformación literal, además de desetiquetar los tokens individuales, el ejemplo anterior se convierte en:<apply>...</apply>(...)

( más ( veces a ( potencia 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. [25] [26]

Anotación de Wikidata en Content MathML

Según la Sociedad OM, [27] Los diccionarios de contenido OpenMath se pueden emplear como colecciones de símbolos e identificadores con declaraciones de su semántica: nombres, descripciones y reglas. Un artículo de 2018 presentado en la conferencia SIGIR [28] propuso que la base de conocimiento semántico Wikidata podría usarse como un diccionario de contenido OpenMath para vincular elementos semánticos de una fórmula matemática con elementos de Wikidata únicos e independientes del lenguaje.

Ejemplo

La conocida fórmula cuadrática podría representarse en Presentation MathML como un árbol de expresión formado por elementos de diseño como <mfrac>o <msqrt>:

< modo matemático = "display" xmlns= "http://www.w3.org/1998/Math/MathML" > <semántica> <mrow> <mi> x </mi> <mo> = </mo> < mfrac> <mrow> <mo form= "prefijo" > </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= "application/x-tex" > <!-- TeX --> x = \frac{- b\pm\sqrt{b^2-4ac}}{2a} </annotation> <annotation encoding= "StarMath 5.0" > x = {-b plusminus sqrt {b^2 - 4 ac}} sobre {2 a} </annotation> <!-- Se pueden escribir más anotaciones: application/x-troff-eqn para eqn, application/x-asciimath para AsciiMath... --> <! -- Semantic MathML vaya bajo codificación <annotation-xml ="MathML-Contenido">. --> </semántica > </matemáticas>                  

Este ejemplo utiliza el <annotation>elemento, que se puede utilizar para incrustar una anotación semántica en un formato que no sea XML, por ejemplo, para almacenar la fórmula en el formato utilizado por un editor de ecuaciones como StarMath o el marcado que utiliza la sintaxis LaTeX . El encodingcampo suele ser de tipo MIME , aunque la mayoría de codificaciones de ecuaciones no tienen dicho registro; En tales casos se puede utilizar texto de formato libre.

Aunque es menos compacto que otros formatos, la estructura XML de MathML hace que su contenido sea ampliamente utilizable y accesible, permite una visualización casi 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 ni editado directamente por humanos. [29]

Incrustar 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.

<?xml versión="1.0" codificación="UTF-8"?> <!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 > < title > Ejemplo de MathML incrustado en un archivo XHTML </ title > < meta  name = "description"  content = "Ejemplo de MathML incrustado en un archivo XHTML" /> </ head > < body > < h1 > Ejemplo de MathML incrustado en un archivo XHTML < / h1 > <p> _ _El área de un círculo es< math  xmlns = "http://www.w3.org/1998/Math/MathML" > < mi > π <!-- π --> </ mi > < mes > <!-- ⁢ --> </ mo > < msup > < mi > r </ mi > < mn > 2 </ mn > </ msup > </ math > . </p> </body> </html> _ _ _ _ _ _
Una representación de la fórmula para un círculo en MathML+XHTML usando Firefox 22 en Mac OS X

Inline MathML también es compatible con archivos HTML5 . No es necesario especificar espacios de nombres como en XHTML .

<!DOCTYPE html> < html  lang = "en" > < head > < meta  charset = "utf-8" > < title > Ejemplo de MathML incrustado en un archivo HTML5 </ title > </ head > < body > < h1 > Ejemplo de MathML incrustado en un archivo HTML5 </ h1 > < p >El área de un círculo es< matemáticas > < mi > π </ mi > < mes > </ mo > < msup > < mi > r </ mi > < mn > 2 </ mn > </ msup > </ math > . </p> </body> </html> _ _ _ _ _ _

Otros estándares

Otro estándar llamado OpenMath que ha sido diseñado más específicamente (en gran parte por las mismas personas que idearon Content MathML) para almacenar fórmulas semánticamente se puede utilizar para complementar MathML. Los datos de OpenMath se pueden incrustar en MathML usando el elemento. Los diccionarios de contenido de OpenMath se pueden utilizar para definir el significado de los elementos. Lo siguiente definiría P 1 ( x ) como el primer polinomio de Legendre :<annotation-xml encoding="OpenMath"><csymbol>

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

El formato OMDoc se ha creado para marcar estructuras matemáticas más grandes que las fórmulas, desde declaraciones como definiciones, teoremas, pruebas y ejemplos, hasta teorías completas e incluso libros de texto completos. Las fórmulas en 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 [30] a través de Transformaciones XSL .

Ver también

Referencias

  1. ^ abcde "ISO - ISO/IEC 40314:2016 - Tecnología de la información - Lenguaje de marcado matemático (MathML) Versión 3.0, segunda edición". YO ASI . 2016 . Consultado el 6 de abril de 2021 .
  2. ^ abcdefghCarlisle , David; Ión, Patricio; Minero, Robert, eds. (10 de abril de 2014). "Lenguaje de marcado matemático (MathML) versión 3.0, segunda edición". W3C . Consultado el 6 de abril de 2021 .
  3. ^ Carlisle, David; Wang, Frédéric, eds. (4 de mayo de 2022). "Núcleo de MathML". W3C . Consultado el 3 de marzo de 2023 .
  4. ^ "12 - Ecuaciones matemáticas". 8 de noviembre de 1993.
  5. ^ "¡Lanzamiento de Mozilla 1.0!". 5 de junio de 2002 . Consultado el 3 de marzo de 2023 .
  6. ^ McCathieNevile, Charles (27 de septiembre de 2007), ¿Pueden los cernícalos hacer matemáticas? Soporte MathML en Opera Kestrel, Opera
  7. ^ "Estándar de vida HTML" . Consultado el 3 de marzo de 2023 .
  8. ^ "Un perfil MathML para CSS". W3C. 7 de junio de 2011 . Consultado el 25 de julio de 2013 .
  9. ^ abc "Recomendación del W3C versión 3.0 del lenguaje de marcado matemático". W3.org . Consultado el 9 de mayo de 2012 .
  10. ^ Dakin, Beth (17 de agosto de 2010). "Anuncio...MathML!" . Consultado el 3 de marzo de 2023 .
  11. ^ "Una guía para desarrolladores web sobre la última versión Beta de Chrome". 8 de noviembre de 2012 . Consultado el 3 de marzo de 2023 .
  12. ^ "Comentario 32 sobre el problema 152430: Habilitación de la compatibilidad con MathML". 5 de febrero de 2013 . Consultado el 3 de marzo de 2023 .
  13. ^ "W3C MathML 3.0 aprobado como estándar internacional ISO/IEC". W3.org . 23 de junio de 2015 . Consultado el 12 de junio de 2015 .
  14. ^ Deyan Ginev; Michael Kohlhase; Moritz Schubotz; Raniere Silva; Frédéric Wang, Asociación Mundial para el Manejo de Herramientas MathML , consultado el 20 de junio de 2016
  15. ^ Krautzberger, Peter (1 de noviembre de 2013). "MathML sigue adelante". oreilly.com . Consultado el 22 de noviembre de 2014 .
  16. ^ "Núcleo de MathML". 4 de mayo de 2022 . Consultado el 3 de marzo de 2023 .
  17. ^ "Igalia devuelve MathML a Chromium". Noticias de Igalia. 10 de enero de 2023 . Consultado el 10 de enero de 2023 .
  18. ^ abc Libbrecht, Paul (1 de septiembre de 2023). "Declaraciones de tipo medio MathML". W3C . Consultado el 2 de septiembre de 2023 .
  19. ^ "La interfaz MathML". W3C. 21 de octubre de 2003 . Consultado el 2 de septiembre de 2023 . El Grupo de Trabajo de Matemáticas del W3C recomienda la extensión de archivo estándar utilizada para el registro del navegador..mml
  20. ^ "JAWS Versión 16" . Consultado el 7 de septiembre de 2023 .
  21. ^ Vismor, Timothy, Visualización de matemáticas en Internet , consultado el 13 de abril de 2011
  22. ^ "Caracteres, entidades y fuentes". W3.org .
  23. ^ "Definiciones de entidades XML para personajes (segunda edición)". W3.org .
  24. ^ "Marcado de contenido". W3.org .
  25. ^ Steven DeRose. Libro de preguntas frecuentes sobre SGML: Comprensión de la relación entre SGML y XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8
  26. ^ Expresiones S canónicas # citar nota-0
  27. ^ "Inicio de OpenMath · OpenMath". www.openmath.org .
  28. ^ Schubotz, Moritz; Scharpf, Philipp; Gipp, Bela (2018). "Representación de fórmulas matemáticas en contenido MathML utilizando Wikidata" (PDF) . Birndl@sigir .
  29. ^ Buswell, Steven; Devitt, Stan; Díaz, Ángel; et al. (7 de julio de 1999). "Especificación del lenguaje de marcado matemático (MathML) 1.01 (resumen)" . Consultado el 26 de septiembre de 2006 . Si bien MathML es legible por humanos, se anticipa que, excepto en los casos más simples, los autores utilizarán editores de ecuaciones, programas de conversión y otras herramientas de software especializadas para generar MathML.
  30. ^ Carlisle, David (10 de abril de 2007). "XHTML y MathML de Office 2007". Blogspot . Consultado el 20 de septiembre de 2007 .

Otras lecturas

Especificaciones

enlaces externos