Pensamientos y Libros

25 noviembre 2007

Utilizar Latex en documentos Docbook

Filed under: Computación,Edición,Linux,Matemáticas — Toni Cebrián @ 19:40

 

 

Instrucciones

El formato XML ha sido una gran idea. Un formato sencillo y fácilmente extensible utilizado para describir datos con multitud de aplicaciones. Yo por ejemplo lo utilizo para redactar estos artículos utilizando el esquema publicado de Docbook, luego los convierto a HTML utilizando unas hojas de estilo en formato XSL y finalmente las subo a esta web. Es una solución muy flexible y que me evita tener que andar pensando en formatos y tipos de letras, simplemente hay que escribir contenido. Sin embargo viene con un peaje a pagar, el tener que lidiar con una sintaxis farragosa cuando hay que escribir el XML “a pelo” situación que aparece a menudo cuando queremos escribir ecuaciones y fórmulas matemáticas para la web utilizando el formato MathML. En este artículo voy a explicar cómo podemos ahorrarnos parte de la farragosa tarea de escribir matemáticas en un documento Docbook utilizando el truco de escribir las matemáticas en Latex dentro del documento y utilizar un filtro que nos convierta ese Latex a MathML antes de hacer cualquier conversión.

 

 

Instalación

 

  • Lo primero es bajarse el software que nos hará la conversión de Latex a MathML desde la página de itexToMML. Existen versiones para Mac y para Linux. En lo que sigue del artículo me referiré a la instalación en Linux. Descomprimimos el tar.gz que contiene los binarios y los fuentes del programa.
  • El programa utiliza el flujo de entrada al programa y traduce todos los entornos matemáticos Latex a su equivalente MathML. Para ilustrarlo creamos el fichero Docbook de ejemplo que se muestra en el siguiente listado.
    <?xml version="1.0" encoding="UTF-8"?><section version="5.0" xmlns="http://docbook.org/ns/docbook"         xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:xi="http://www.w3.org/2001/XInclude"
    
    xmlns:svg="http://www.w3.org/2000/svg"
    
    xmlns:mml="http://www.w3.org/1998/Math/MathML"
    
    xmlns:html="http://www.w3.org/1999/xhtml"
    
    xmlns:db="http://docbook.org/ns/docbook">
    
    <title>La función más famosa</title>
    
    <para>La función que aquí mostramos, $E=mc^2$, se ha convertido en un
    
    icono cultural aunque muy pocos comprendan su verdadero significado.</para>
    
    </section>
  • A continuación lo que hay que hacer es filtrar este flujo de texto con nuestro programa itex2MML para que convierta las funciones latex en su equivalente MathML. En línea de comandos hacemos:cat Ejemplo.xml | itex2MML > Exemplo-procesado.xmly el archivo original queda convertido en el que puede verse en el siguiente listado.
    <?xml version="1.0" encoding="UTF-8"?><section version="5.0" xmlns="http://docbook.org/ns/docbook"xmlns:xlink="http://www.w3.org/1999/xlink"
    
    xmlns:xi="http://www.w3.org/2001/XInclude"
    
    xmlns:svg="http://www.w3.org/2000/svg"
    
    xmlns:mml="http://www.w3.org/1998/Math/MathML"
    
    xmlns:html="http://www.w3.org/1999/xhtml"
    
    xmlns:db="http://docbook.org/ns/docbook">
    
    <title>La función más famosa</title>  <para>La función que aquí mostramos, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><mi>E</mi><mo>=</mo><msup><mi>mc</mi> <mn>2 </mn></msup></math>, se ha convertido en un
    
    icono cultural aunque muy pocos comprendan su verdadero significado.</para>
    
    </section>
  • Una vez tenemos la fórmula convertida a MathML lo que tenemos es un documento Docbook bien formado y lo único que nos queda es aplicarle las hojas de estilo y las transformaciones necesarias para obtener nuestros PDFs o páginas html. El resultado puede verse en el siguiente párrafo.La función que aquí mostramos,
    E = mc 2 , se ha convertido en un icono cultural aunque muy pocos comprendan su verdadero significado.

 

Caution

Es importante que en las transformaciones a XHTML el fichero destino no tenga extensión .html pues en dicho caso las fórmulas no se muestran correctamente. Utilizar la extensión xhtml o xml para visualizar el contenido correctamente.

Sobre WordPress

WordPress elimina el contenido específico de MathML al guardar el post así que estoy tratando de pensar cómo rodear y solucionar este problema.

5 noviembre 2007

Configurar Firefox para que pueda renderizar MathML en Linux

Filed under: Computación,Edición,Linux,Matemáticas — Toni Cebrián @ 23:35

 

 

Instrucciones

Para poder visualizar MathML al utilizar el navegador Firefox en Linux es necesario previamente haber instalado las fuentes que permitan hacer el renderizado necesario. Para ello, seguimos los siguientes pasos:

  • En Ubuntu Gutsy el navegador está compilado con soporte para Xft (se comprueba poniendo about:buildconfig en la dirección y comprobando que tiene el –enable-xft como opción de compilación) así que descargamos las fuentes que se encuentran http://www.mozilla.org/projects/mathml/fonts/bakoma/texcm-ttf.zip y en http://support.wolfram.com/mathematica/systems/windows/general/files/MathFonts_TrueType_41.exe.
  • Las fuentes hay que descomprimirlas y guardarlas en ~/.fonts (crear el directorio si no existe). Las fuentes Mathematica pese a ser un fichero .exe se pueden descomprimir normalmente con el comando unzip MathFonts_TrueType_41.exe
  • Aún nos faltará una última fuente que no está disponible fácilmente. Si tienes algún sistema Windows a mano copia la fuente Symbol.ttf que se encuentra en el directorio c:\windows\Fonts en nuestro directorio de fuentes ~/.fonts
  • Ya por último para comprobar que todo funciona reinicia el navegador y ya tienes todas las fuentes instaladas. Para comprobarlo utiliza la página de prueba de http://www.w3.org/Math/XSL/pmathml2.xml

Todos estos pasos parece que no habrá que hacerlos en el futuro pues se están preparando unas fuentes que serán de libre distribución y vendrán incorporadas en nuestras distribuciones linux. Más información en http://www.mozilla.org/projects/mathml/fonts/

24 julio 2007

Conversión de la codificación de los archivos de texto

Filed under: Computación,Linux — Toni Cebrián @ 22:41

Cuando quiera cambiar la codificación con la que se creó un archivo de texto hay que utilizar el comando recode. Por ejemplo para transformar de UTF-8 a ISO8859-1 la línea de comando es:

recode utf8..latin1

20 junio 2007

Pequeñas perlas de la consola

Filed under: Computación,Linux — Toni Cebrián @ 15:24

Hay veces que me maravilla la facilidad con que ciertas cosas se pueden hacer si se dedica un poco de tiempo a pensar y no darse por vencido en la primera aproximación.

Hoy tenía que averiguar de un archivo de trazas de un apache de unos 800 megas el número aproximado de visitantes a un portal web para poder hacer un dimensionado acorde de un desarrollo que estamos haciendo. En cada traza tenía la cookie del usuario pero obviamente estaban completamente desordenadas y no podía saber cuántas habían diferentes. Ya estaba preparándome para importar los datos a lo bestia en una base de datos y hacer un SELECT DISTINCT cuando me he dado cuenta que eso era matar moscas a cañonazos. Después de hacer el esfuerzo de darle una pensada me ha salido la siguiente línea de comando:
cut --fields=1 09MayoProcesado.log | sort | uniq -c | wc --lines

Resultado final, un numerito con el total de cookies diferentes en el fichero gordote de los 800 Megas. Parafraseando a Schumacher, lo pequeño es hermoso.

Crea un blog o un sitio web gratuitos con WordPress.com.