LaTeX y compañía

Informacion sobre LaTeX y programas relacionados

5.10.03

Etiquetas más flexibles para MetaPost

Metapost tiene la capacidad de incluir etiquetas (textos) como parte del dibujo. Para ello proporciona la orden label la cual recibe como primer parámetro el texto a mostrar, y como segundo parámetro las coordenadas del punto donde debe aparecer. El primer parámetro (el texto) puede ser de dos tipos diferentes:
  • Una picture, que es el resultado de una serie de órdenes de dibujo. Lo más habitual es que esta picture sea el resultado de procesar las directivas btex/etex. Estas directivas causan que el texto comprendido entre ellas sea procesado externamente por TeX, y el resultado de ese procesamiento es insertado de nuevo en la figura metapost, en forma de picture. Esto permite incluir fórmulas o textos que requieran un formateado especial. Por ejemplo:
      label(btex El valor de $i$ es 3. etex, (0,0));
    El inconveniente es que no se pueden usar variables metapost entre el par etex/btex, sino tan solo texto «literal».
  • Un string, que es una secuencia de caracteres entre comillas. En este caso, TeX no es utilizado. La cadena se emite sin más, en el tipo de letra por defecto. La ventaja de esta segunda forma es que la cadena puede ser construida "dinámicamente", a partir de los contenidos de otras variables metapost. Por ejemplo, la cadena puede ser el resultado de concatenar varias cadenas, como en
       label("El valor de i es " & decimal i & ".", (0,0));
    (recuérdese que & es el carácter de concatenación de strings y que decimal es una primitiva que convierte un entero en un string). Sin embargo el inconveniente es que la cadena no puede contener comandos TeX. Si la cadena es, por ejemplo "$i$", el texto que aparecerá será precisamente ese, y no una i en modo matemático.
Sería interesante poder combinar lo mejor de ambos enfoques, es decir, poder generar dinámicamente un string, y que sea interpretado por TeX, de modo que al procesar la cadena
  "El valor de $i$ es " & decimal i & "."
se obtenga el texto «El valor de i es 3.» (suponiendo que ese sea el valor de la variable)

Este es el problema que, de forma independiente, se han planteado dos autores diferentes, y las soluciones a las que ha llegado cada uno son:

  • LatexMP. Esta biblioteca para MetaPost está publicada en CTAN, y no sólo resuelve el problema anterior, sino que además proporciona un método para lograr etiquetas multicolor sin necesidad de parchear dvitomp (ver mi artículo sobre este tema). Además trae una excelente documentación y ejemplos de uso. El paquete proporciona gran cantidad de opciones de configuración.
  • latex.mp. Esta biblioteca para MetaPost no está publicada "oficialmente" en ningún lugar (salvo este blog), pero puede descargarse formando parte de la librería MakeCirc. Es un código mucho más simple y compacto que el de LatexMP, y la documentación es mucho menor (incluída en forma de comentarios en el propio código de la biblioteca). No obstante, salvo por las etiquetas multicolor, ofrece la misma funcionalidad que LatexMP.
Creo que latex.mp puede ser más apropiado para ser utilizado como parte de otras bibliotecas. Por ejemplo, ha sido usado en la biblioteca Schema, para dibujo de circuitos electrónicos, y en la biblioteca MakeCirc, de futura aparición, para el dibujo de circuitos electricos. Por el contrario, LatexMP puede ser más adecuada para el usuario final, sobre todo si requiere etiquetas multicolor.
 
 

Powered by Blogger