Fecha

Como última entrada antes del descanso que me voy a tomar en el tema de la edición de textos científicos (no lo voy a dejar definitivamente, puesto que creo que todavía me queda mucho por curiosear), he querido escribir algunas breves reflexiones acerca de mi experiencia con MathML y EPUB.

En primer lugar hay que destacar la falta de editores y conversores para tal fin; creo que la composición de textos científicos con MathML tiene suficiente trascendencia para el poco interés que consigue atraer. La sombra de LaTeX es muy alargada y las aplicaciones existentes para MathML y EPUB son escasas, muy limitadas y con pocas perspectivas de futuro. La única herramienta que a mi juicio cumple las expectativas, y que se ha convertido en una aplicación imprescindible, es MathJax. MathML es un lenguaje muy farragoso para escribirlo directamente, por lo que sería adecuado algún editor visual para no tener que pelearse con la sintaxis.

En segundo lugar es necesario recalcar el desmesurado volumen y el carácter enmarañado de las especificaciones, que, aunque muy raramente, en ocasiones conducen a la aparición de imprecisiones o ambigüedades. Influidas por esta complejidad, las aplicaciones que hacen uso de estas especificaciones suelen ir siempre muy retrasadas en su implementación. Para colmo, algunas aplicaciones deciden seguir una especificación propia, mezclando características de varias versiones o implementando características propias (como la afamada Calibre), añadiendo más confusión si cabe.

Por último, y creo que se trata del punto de mayor interés, quiero comentar las dificultades y limitaciones de MathML. En Presentation MathML (PMML), si es necesario un símbolo que no se encuentra entre los caracteres unicode, para un nuevo concepto matemático que se acaba de definir, se puede utilizar de forma relativamente sencilla una imagen para dicho carácter, con el elemento <mglip> de PMML. En Content MathML (CMML), se puede definir el significado de un nuevo concepto matemático a través del elemento <csymbol> y los content dictionaries de OpenMath; pero esto supone un nivel superior de dificultad, comparado con el caso de PMML. Además, es suficiente con intentar codificar en Content MathML un ejemplo algo más complicado que una fórmula, como los razonamientos de una demostración p.e., para intuir que este sistema tiene algunas carencias: parece necesario algún mecanismo "lógico" que permita reflejar el modo en que se derivan los razonamientos. También resultarían convenientes instrumentos que recogieran los conceptos de resultado matemático (Proposición, Teorema, Lema, Corolario) y de demostración.

Para rellenar estos vacíos apareció la especificación OMDoc, como extensión del lenguaje OpenMath. Por ejemplo, OMDoc introduce el elemento <derive> para especificar la deducción de una sentencia a partir de otra dentro de una demostración. Aunque interesante, OMDoc presenta para mí un inconveniente de partida obvio: cuanto mayor es el ámbito que se intenta cubrir, más extensa y compleja resultará la especificación.

Por ejemplo, en el caso de MathML sólo tuve que hacer un esfuerzo relativamente pequeño e invertir unas pocas horas, para empezar a escribir ejemplos propios y visualizarlos en el navegador; por el contrario, nunca he conseguido reunir las fuerzas suficientes para hacerme con los conocimientos mínimos de OMDoc que me permitiesen escribir algún ejemplo básico. Algún día será ...