LaTeX y compañía

Informacion sobre LaTeX y programas relacionados

22.9.03

Etiquetas multicolor en MetaPost

Como es sabido, en MetaPost es posible colocar etiquetas que contengan texto, haciendo uso de los delimitadores btex/etex. El contenido de estas etiquetas puede ser cualquier comando LaTeX (si el preámbulo del fuente metapost define las cabeceras latex), pero si entre estos comandos se hallan comandos de cambio de color, estos serán ignorados y el texto resultante se mostrará siempre negro. Es decir, el siguiente programa metapost:
verbatimtex
\documentclass{article}
\usepackage{color}
\begin{document}
etex
beginfig(1);
  label(btex Palabras \textcolor{red}{rojas} etex, (0,0));
endfig;
end;
producirá como resultado el texto "Palabras rojas", pero todo él en negro, ya que los comandos de color parecen ser ignorados.

He investigado la causa de éste comportamiento. Resulta que el texto comprendido entre btex/etex es extraído por una herramienta llamada mpto, y a continuación es procesado por latex para producir un DVI. Este DVI es leído seguidamente por otra herramienta llamada dvitomp, la cual convierte los comandos DVI (posicionamiento de cada letra y fuente usada), en los correspondientes comandos metapost, que son dejados en un fichero de extensión mpx, el cual finalmente es leído de nuevo por metapost para producir la figura final.

Es precisamente la herramienta dvitomp la que ignora los comandos de cambio de color, porque no son comandos estándar DVI, sino "ampliaciones". Cada vez que se cambia el color, en el DVI se almacena un comando "especial", que guarda el color que se estaba usando y define uno nuevo. Más adelante insertará otro comando especial cuando haya que volver al color guardado.

He modificado la herramienta dvitomp para que no ignore estos cambios de color, sino que los tenga en cuenta y los incluya en el mpx resultante. Si mi versión de dvitomp está instalada en el sistema, el código metapost del ejemplo anterior producirá correctamente la palabra "rojas" en color rojo.

Si quieres probar esta versión modificada de dvitomp, por desgracia, debes compilarlo tú mismo en tu sistema. Los pasos que detallo a continuación son válidos para un sistema linux. Estaría muy interesado en conocer noticias de alguien que haya conseguido compilarlo con éxito en otros sistemas.

  1. Bájate los fuentes de web2c y de las herramientas TeX en código web
  2. Descomprímelas en una carpeta, y desde ella escribe:
    ./configure
  3. Entra en el subdirectorio texk/web2c y allí escribe
    make dvitomp.c
    Esto te creará el código fuente original de la herramienta, en lenguaje C
  4. Bajate mi parche y dejalo en la misma carpeta en que acabas de crear dvitomp.c
  5. En esa carpeta escribe
    patch < dvitomp.patch
    make dvitomp
  6. Si no hay errores, deberías obtener el ejecutable de dvitomp que ya incorporará el soporte de color. Basta que sustituyas el ejecutable que venía en tu distribución por éste. Por si acaso, yo no destruiría el ejecutable original, sino que lo renombraría para poder recuperarlo más tarde si mi versión parcheada te da problemas.
Si quieres arriesgarte a hacer la prueba, puedes bajarte dvitomp ya compilado para linux. Al menos en mi máquina funciona...
 
 

Powered by Blogger