Content MathML está diseñado para codificar la semántica de las fórmulas matemáticas. Aunque sugiere ciertas reglas de renderizado por defecto para ciertos elementos, no especifica por sí sólo la representación gráfica de las fórmulas.

Es comprensible, por tanto, que ningún motor WEB de renderizado (Gecko, Webkit) soporte la especificación Content MathML.

A continuación describo una de las formas para obtener una Presentación gráfica de las fórmulas matemáticas codificadas en Content MathML.

Existen (al menos) dos maneras proporcionar una presentación gráfica a las fórmulas matemáticas escritas en Content MathML:

i) Combinando los elementos de Content MathML y Presentation MathML en lo que se conoce como “Mixed Markup” (Marcado Mixto??).

ii) Transformando los elementos de Content MathML en Presentation MathML mediante una hoja de estilos XSLT.

Es conveniente observar que con ambos métodos se va a conseguir un resultado personalizado (no existe una manera estándar de proceder en ninguno de los dos casos). En este sentido cobra ventaja el método ii), puesto que se puede convenir que una determinada hoja de transformaciones XSL sea el estándar a seguir. Por este motivo, me voy a centrar en el método ii).

En estos momentos, la que parece contar con mayor apoyo (sobre todo de la W3C) es la hoja de transformaciones ctop.xsl (Content TO Presentation) de David Carlisle (existen otras conocidas como MathMLc2p.xsl del proyecto jEuclid).

Podemos usar la hoja de transformaciones, a su vez, de dos formas distintas:

ii.1) Cargándo la hoja en el documento xhtml, para que el procesador xslt que suelen incorporar los navegadores realice la transformación a Presentation MathML al vuelo, al tiempo que muestra el documento (i.e., no modifica el original).

ii.2) Utilizar un procesador xslt para generar una modificación permanente del documento en el que se realiza la transformación del código Content MathML en Presentation MathML. Esta es la forma obligada de hacerlo para páginas html que vayan a formar parte de un documento EPUB.

A continuación detallo las dos formas:

1) Sólo hay que indicar en la cabecera del documento xhtml el nombre de la hoja de estilos XSL. Es conveniente notar que por motivos de seguridad, en Firefox la hoja de estilos debe de estar localizada en la misma carpeta en la que se encuentra el documento xhtml. La línea utilizada para cargar la hoja de estilos debe tener la forma:

<?xml-stylesheet type=”text/xsl” href=”nombre_hoja.xsl” ?>

Debe ser introducido antes de la declaración DOCTYPE, de modo que quede como el de la figura.

Forma de enlazar a la hoja de transformaciones ctop.xsl en un documento xhtml

En la siguiente imagen se observa cómo Firefox es capaz de renderizar las fórmulas a partir de la hoja ctop.xsl:

Procesado de Firefox del documento Content MathML mediante la plantilla ctop.xsl

2) En Linux, uno de los procesadores XSLT más accesible (puesto que viene por defecto con el escritorio Gnome y otras muchas aplicaciones), se denomina xsltproc. La sintaxis más sencilla es:

$ xsltproc  -o  output-document.xhtml  stylesheet.xsl input-document.xhtml

Utilización de xsltproc

En la siguiente imagen puede observarse cómo el procesador XSLT ha sustituido la sintaxis Content MathML por sintaxis Presentation MathML:

Resultado tras procesar el documento Content MathML mediante la hoja ctop.xsl

Enlaces de interés:

  • http://www.w3.org/Math/XSL/
  • https://code.google.com/p/web-xslt/wiki/Overview
  • http://www.w3.org/Math/XSL/Overview-tech.html
  • https://www.lri.fr/~pietriga/mathmlc2p/mathmlc2p.html