Articulo de referencia

MatemáticasML

{{Cite web\n\t\t| url = https://www.iso.org/standard/58439.html\n\t\t| title = ISO - ISO/IEC 40314:2016 - Information technology — Mathematical Markup Language (MathML) Version ...

El lenguaje de marcado matemático ( MathML ) es un conjunto de lenguajes de marcado matemático , una aplicación de XML para describir la notación matemática y capturar tanto su estructura como su contenido. Su objetivo es integrar de forma nativa fórmulas matemáticas en páginas web y otros documentos. Forma 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 para marcado matemático en HTML, [ 4 ] MathML 1 fue lanzado como una recomendación del W3C en abril de 1998 como el primer lenguaje XML recomendado por el W3C . La versión 1.01 del formato fue lanzada 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, la segunda edición de MathML Versión 2.0 fue publicada como la versión final por el Grupo de Trabajo de Matemáticas del W3C .

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 completara la Recomendación de Espacios de Nombres, y para su uso en XML, los elementos deben estar en el espacio de nombres con la URL http://www.w3.org/1998/Math/MathML . Cuando MathML se utiliza en HTML (a diferencia de XML), este espacio de nombres es inferido automáticamente por el analizador HTML 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 MathML para CSS Profile ; [ 8 ] este es un subconjunto de MathML adecuado para el formato CSS. Otro subconjunto, Strict Content MathML , 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 <share>elemento permite compartir la estructura. [ 9 ]

El desarrollo de MathML 3.0 pasó por varias etapas. En junio de 2006, el W3C renovó el mandato del Grupo de Trabajo de MathML para producir una Recomendación de MathML 3 hasta febrero de 2008, y en noviembre de 2008 extendió el mandato hasta abril de 2010. Un sexto Borrador de Trabajo de la revisión de MathML 3 se publicó en junio de 2009. El 10 de agosto de 2010, la versión 3 pasó a ser una "Recomendación Propuesta" en lugar de un borrador. [ 9 ] Una implementación de MathML 2 llegó a WebKit por esas mismas fechas, [ 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 norma internacional ISO/IEC 40314:2015 el 23 de junio de 2015. [ 13 ] También en 2015, se fundó la Asociación MathML 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 pagaba a ninguno de sus desarrolladores por ningún trabajo de renderizado de MathML; el apoyo existente era 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 principal del Lenguaje de Marcado Matemático, o MathML, adecuado para su implementación en navegadores". [ 16 ] MathML Core se diferenció de MathML 3.0 al incluir reglas de renderizado detalladas e integración con CSS , recursos automatizados para pruebas de compatibilidad con navegadores y centrarse en un subconjunto fundamental de MathML. Se añadió una implementación a Chromium a principios de 2023. [ 17 ]

Presentación y semántica

MathML no solo se ocupa de la presentación , sino también del significado de los componentes de las fórmulas (esta última parte de MathML se conoce como "Content MathML"). Dado que el significado de la ecuación se conserva independientemente de su presentación, la forma en que se comunica el contenido puede quedar a criterio del usuario. Por ejemplo, las páginas web con MathML incrustado pueden visualizarse como páginas web normales en muchos navegadores, pero los usuarios con discapacidad visual también pueden escuchar el mismo MathML leído mediante lectores de pantalla (por ejemplo, con VoiceOver en Safari ). JAWS, a partir de la versión 16, admite la lectura de MathML y ​​la salida en braille. [ 20 ]

La calidad de la representación de MathML en un navegador depende de las fuentes instaladas. El proyecto STIX Fonts ha publicado un conjunto completo de fuentes matemáticas bajo una licencia abierta. La fuente Cambria Math incluida en Microsoft Windows tenía una compatibilidad ligeramente más limitada. [ 21 ]

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

Presentación MathML

Presentation MathML se centra en la visualización de una ecuación y consta de unos 30 elementos. Los nombres de los elementos comienzan con m. Una expresión Presentation MathML se construye a partir de tokens que se combinan mediante elementos de nivel superior, los cuales controlan su diseño. Los detalles de la presentación se ven afectados por cerca de 50 atributos.

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

  • <mi>x</mi>– identificadores;
  • <mo>+</mo>– operadores;
  • <mn>2</mn>– números;
  • <mtext>such that</mtext>- texto.

Sin embargo, tenga en cuenta que estos elementos token pueden usarse como puntos de extensión, lo que permite el marcado en lenguajes anfitriones. MathML en HTML5 permite la mayor parte del marcado HTML en línea en mtext y cumple con el estándar, ya que el marcado HTML se usa dentro de MathML para marcar el texto incrustado (poniendo la primera palabra en negrita en este ejemplo).<mtext><b>non</b>zero</mtext>

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

  • <mrow>– una fila horizontal de elementos;
  • <msup>, <munderover>, y otros: superíndices, límites por encima y por debajo de operadores como sumas, etc.;
  • <mfrac>– fracciones;
  • <msqrt>y <mroot>– raíces;
  • <mfenced>– rodear el contenido con delimitadores, como paréntesis.

Como es habitual en HTML y XML, existen 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 notación abreviada &it;) para la multiplicación implícita. Estas son:

  • APLICACIÓN DE FUNCIÓN U+2061 (para distinguirpecado(incógnita){\displaystyle \sin(x)}depecadoincógnita{\displaystyle {\sin }\cdot x}enpecadoincógnita{\displaystyle \sin {x}});
  • U+2062 TIEMPOS INVISIBLES (para distinguirametro×norte{\displaystyle a_{m\times n}}deametro,norte{\displaystyle a_{m,n}}enametronorte{\displaystyle a_{mn}});
  • SEPARADOR INVISIBLE U+2063 (o viceversa);
  • U+2064 INVISIBLE PLUS (para distinguir2+13{\displaystyle 2+{\frac {1}{3}}}de213{\displaystyle 2\cdot {\frac {1}{3}}}en213{\displaystyle 2{\tfrac {1}{3}}}).

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ónaincógnita2+bincógnita+do{\displaystyle ax^{2}+bx+c}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 ( <mi>), operadores ( <mo>) o números ( <mn>). Al agregar el marcado del token, la forma completa termina siendo

<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 únicamente del ejemplo MathML anterior:

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

Contenido MathML

Content MathML se centra en la semántica, o significado, de la expresión en lugar de en su estructura. El <apply>elemento central de Content MathML es el que representa la aplicación de la función. La función que se aplica es el primer elemento hijo dentro de <apply>, y sus operandos o parámetros son los elementos hijos restantes. Content MathML utiliza solo unos pocos atributos.

Los tokens, como los identificadores y los números, se marcan individualmente, de forma similar a Presentation MathML, pero con elementos como <ci>y <cn>. En lugar de ser simplemente otro tipo de token, los operadores se representan mediante elementos específicos, cuya semántica matemática es conocida por MathML: <times>, <power>, etc. Existen más de cien elementos diferentes para distintas funciones y operadores. [ 24 ]

Por ejemplo, representa<apply><sin/><ci>x</ci></apply>pecado(incógnita){\displaystyle \sin(x)}y representa<apply><plus/><ci>x</ci><cn>5</cn></apply>incógnita+5{\displaystyle x+5}. Los elementos que representan operadores y funciones son elementos vacíos, porque sus operandos son los otros elementos que se encuentran debajo del contenedor <apply>.

La expresiónaincógnita2+bincógnita+do{\displaystyle ax^{2}+bx+c}podría representarse 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>

El contenido MathML es casi isomorfo a las expresiones en un lenguaje funcional como Scheme y otros dialectos de Lisp . equivale a Scheme , y los numerosos operadores y elementos de 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:<apply>...</apply>(...)

( más ( por a ( potencia x 2 )) ( por b x ) c )

Esto refleja la relación estrecha, conocida desde hace mucho tiempo, entre las estructuras de elementos XML y las expresiones S de LISP o Scheme . [ 25 ] [ 26 ]

Anotación de Wikidata en Content MathML

Según la OM Society, [ 27 ] los diccionarios de contenido de OpenMath pueden emplearse 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 utilizarse 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

La conocida fórmula cuadrática podría representarse en Presentation MathML como un árbol de expresiones 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}} over {2 a} </annotation> <!-- Se pueden escribir más anotaciones: application/x-troff-eqn para eqn, application/x-asciimath para AsciiMath... --> <!-- El MathML semántico va bajo <annotation-xml encoding="MathML-Content">. --> </semantics> </math>

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

Aunque 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á diseñado para ser escrito ni editado directamente por humanos. [ 29 ]

Cómo insertar MathML en archivos HTML/XHTML

MathML, al ser XML, puede incrustarse dentro de otros archivos XML, como archivos XHTML , utilizando espacios de nombres XML.

<?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 > 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>
Representación gráfica de la fórmula para un círculo en MathML+XHTML usando Firefox 22 en Mac OS X.

También se admite MathML en línea en archivos HTML5 . No es necesario especificar espacios de nombres como ocurría 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>

Cómo integrar MathML en archivos de la suite ofimática OpenDocument

MathML es compatible de forma nativa con el formato OpenDocument , estandarizado por la ISO , que es el formato de archivo predeterminado de las suites ofimáticas utilizadas en LibreOffice , Collabora Online y otras. Estos archivos tienen las extensiones .odt, .ods y .odp. El elemento XML específico <math:math> sirve como contenedor para el contenido MathML, lo que garantiza su correcta interpretación dentro del marco de OpenDocument.

Microsoft Office no admite MathML de forma nativa en sus formatos de archivo XML propietarios predeterminados (.docx, .xlsx, .pptx): en su lugar, define una sintaxis matemática XML diferente derivada de versiones anteriores de Microsoft Office. Cuando Microsoft Office guarda ecuaciones en formato OpenDocument, puede guardarlas como imágenes no editables, lo que impide su edición posterior y provoca la pérdida de información. Este es un problema de Microsoft Office; existen soluciones alternativas, como actualizar Word, asegurarse de que las ecuaciones estén en el formato más reciente, desactivar el guardado automático y usar la opción "Guardar como MathML".

Otros estándares

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

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

La compatibilidad con OpenMath forma parte de la especificación de la suite ofimática OpenDocument , que permite explícitamente la integración de objetos OpenMath junto con MathML. De esta forma, MathML representa la ecuación y OpenMath proporciona una representación semántica para que el software pueda realizar cálculos con ella. Las suites ofimáticas que utilizan por defecto el estándar OpenDocument, como LibreOffice y Collabora Online, se adhieren actualmente al estándar MathML para garantizar la interoperabilidad. En cambio, OpenMath no está definido en los formatos de documento propietarios de Microsoft para docx, pptx y xlsx.

El formato OMDoc se creó para el marcado de estructuras matemáticas más extensas que las fórmulas, desde enunciados como definiciones, teoremas, demostraciones y ejemplos, hasta teorías completas e incluso libros de texto enteros. Las fórmulas en los documentos OMDoc pueden escribirse en Content MathML o en OpenMath; para su presentación, se convierten a Presentation MathML.

Véase también

Referencias

  1. 1 2 3 4 5 "ISO - ISO/IEC 40314:2016 - Tecnología de la información — Lenguaje de marcado matemático (MathML) Versión 3.0 2.ª edición" . ISO . 2016. Consultado el 6 de abril de 2021 .
  2. 1 2 3 4 5 6 7 8 Carlisle, David; Ion, Patrick; Miner, Robert, eds. (10 de abril de 2014). "Lenguaje de marcado matemático (MathML) Versión 3.0 2.ª edición" . W3C . Recuperado el 6 de abril de 2021 .
  3. Carlisle, David; Wang, Frédéric, eds. (4 de mayo de 2022). "MathML Core" . W3C . Consultado el 3 de marzo de 2023 .
  4. "12 - Ecuaciones matemáticas" . 8 de noviembre de 1993.
  5. "¡Mozilla 1.0 lanzado!" . 5 de junio de 2002 . Consultado el 3 de marzo de 2023 .
  6. McCathieNevile, Charles (27 de septiembre de 2007), ¿Pueden los Kestrels hacer matemáticas? Compatibilidad con MathML en Opera Kestrel , Opera
  7. "HTML Living Standard" . 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. 1 2 3 "Lenguaje de Marcado Matemático Versión 3.0 Recomendación del W3C" . W3.org . Consultado el 9 de mayo de 2012 .
  10. Dakin, Beth (17 de agosto de 2010). "¡Anunciando… MathML!" . Recuperado el 3 de marzo de 2023 .
  11. "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 del soporte para 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, Mondial Association for Tools Handling MathML , archivado del original el 2 de octubre de 2015 , recuperado 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. "MathML Core" . 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. 1 2 3 Libbrecht, Paul (1 de septiembre de 2023). "Declaraciones de tipo de medio MathML" . W3C . Recuperado 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 las matemáticas en Internet , consultado el 13 de abril de 2011.
  22. "Caracteres, entidades y fuentes" . W3.org .
  23. "Definiciones de entidades XML para caracteres (2.ª edición)" . W3.org .
  24. "Marcado de contenido" . W3.org .
  25. Steven DeRose. El libro de preguntas frecuentes sobre SGML: Entendiendo la relación entre SGML y XML, Kluwer Academic Publishers, 1997. ISBN 978-0-7923-9943-8.
  26. Expresiones S canónicas#cite 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 usando Wikidata" (PDF) . Birndl@sigir .
  29. Buswell, Steven; Devitt, Stan; Diaz, Angel; et al. (7 de julio de 1999). "Especificación del lenguaje de marcado matemático (MathML) 1.01 (Resumen)" . Recuperado el 26 de septiembre de 2006. Si bien MathML es legible para humanos, se prevé que, salvo en los casos más sencillos, los autores utilizarán editores de ecuaciones, programas de conversión y otras herramientas de software especializadas para generar MathML. 

Lecturas adicionales

Presupuesto

  • Recomendación del W3C: Especificación del lenguaje de marcado matemático (MathML) 1.01
  • Recomendación del W3C: Lenguaje de Marcado Matemático (MathML) Versión 2.0 (Segunda Edición)
  • Recomendación del W3C: Lenguaje de Marcado Matemático (MathML) Versión 3.0 (Tercera Edición)
  • Página principal de matemáticas del W3C : contiene las especificaciones, una sección de preguntas frecuentes y una lista de software compatible.
  • Pavi, Sandhu (12 de diciembre de 2002). "El manual de MathML" . Charles River Media . Recuperado el 2 de octubre de 2015 .
  • web-xslt – Una colección de programas XSLT para manejar MathML (por ejemplo, convertir MathML de contenido a MathML de presentación, convertir MathML de presentación a TeX ).
Obtenido de " https://en.wikipedia.org/w/index.php?title=MathML&oldid=1362298769 "