LaTeX y compañía

Informacion sobre LaTeX y programas relacionados

30.10.03

Tutorial sobre LaTeX

En la web del Grupo de usuario de TeX indio hay muchas cosas interesantes. Entre ellas un conjunto de tutorials escrito por su equipo especializado. El tutorial sobre LaTeX puede descargarse en forma de un conjunto "presentaciones en pantalla", o en un único documento PDF. Los contenidos parecen muy interesantes, pero además la forma es impecable. También han escrito un conjunto de tutorials exhaustivo sobre PSTricks, lo cual es de agradecer pues la documentación original de este paquete no estaba demasiado bien estructurada.
 

Escribir algoritmos

Un nuevo paquete, algorithm2e viene a sumarse a los ya existentes para presentar algoritmos en nuestros documentos. Éste parece más configurable y con un resultado más agradable que el de anteriores soluciones como alg o algorithms/algorithmic, y con un interfaz más simple.
 
22.10.03

Quiero mi figura AQUI

Esta es una pregunta bastante frecuente entre los novatos. ¿Cómo puedo hacer que una figura salga en el texto exactamente en el lugar que yo quiero, y no en el que quiera LaTeX? La respuesta más obvia consiste en no poner la figura dentro de un entorno figure, ya que es este entorno quien le dice a LaTeX que tiene permiso para ponerla donde prefiera. Sí, \includegraphics puede ser usado sin necesidad de estar dentro de un figure, pues el entorno figure simplemente indica que su contenido puede "flotar" a otra posición, y que su caption debe llevar la palabra "Figura", pero no que su contenido sea necesariamente un gráfico. Esto suele sorprender a los principiantes.

No obstante, esta solución muchas veces no es satisfactoria, ya que necesitamos que la figura tenga un pie, una numeración y aparezca en la "Lista de figuras" del documento, y todas estas características sólo se logran a través del comando \caption, el cual sólo puede aparecer dentro del entorno figure (u otro flotante). En teoría, LaTeX admite el posicionador [h] para indicar que la figura aparezca en el punto en que aparece en el fuente, en lugar de "flotar" hacia otro punto. Por desgracia esto no es una orden tajante para LaTeX, sino una sugerencia que suele ignorar.

En muchas ocasiones he leido que el posicionador [h!] es una orden más tajante, pero parece que LaTeX suele desobedecerla a menudo también (o quizás no esté implementada en todas las versiones de LaTeX). El caso es que colocar una figura "aqui, aunque quede fea, bajo mi responsabilidad" no parece fácil. Pero en realidad es tan sencillo como incluir el paquete float y especificar el posicionador [H] (observar que va en mayúscula)

Para quienes prefieren hacer las cosas de forma retorcida, es posible añadir un caption en cualquier lugar del texto, sin estar necesariamente dentro de un entorno figure. Para ello puede usarse el paquete capt-of o el paquete captdef. Ambos proporcionan una funcionalidad muy similar, y en el fondo usan el mismo mecanismo, por lo que puedes elegir el que más te guste. Usando capt-of, añadirías el pie de figura escribiendo \captionof{figure}{Texto del pie de figura}, mientras que usando captdef el comando a usar sería \figcaption{Texto del pie de figura}. Ambos paquetes son flexibles y permiten añadir captions de tablas o de otros floats que puedas haber definido tú mismo con ayuda del paquete float. Puede usarse un entorno tabular para asegurarse de que la figura y el "falso pie" van siempre juntos.

 
21.10.03

Presentaciones con LaTeX

Michael Wedman ha preparado un documento en el que recopila las soluciones existentes actualmente para generar presentaciones en pantalla utilizando LaTeX. No sólo cubre la presentación en PDF, sino también en HTML y otros formatos. Para cada solución, muestra un ejemplo, pros y contras.
 
14.10.03

mdwtools

En un reciente mensaje en la lista sptex Laura mencionaba el paquete mdwtools, al cual ya había echado yo un vistazo tiempo atrás, pero lo había olvidado completamente, por lo que ha sido un feliz redescubrimiento.

Este paquete es en realidad un conjunto de ellos. Algunos con utilidad más bien oscura (salvo para TeXpertos), pero otros con una utilidad indudable. He aquí la lista:

  • at Este paquete te permite definir tus propios comandos que, en lugar de comenzar por \, comienzan por @. La utilidad de esta rareza se hace clara cuando pretendes definir un comando con nombre muy corto, para que sirva de abreviatura de otro con un nombre mayor. Entonces te das cuenta de que la mayoría de los comandos cuyo nombre consta de un par de letras ya existe (bien como primitiva de TeX o bien como comando latex). O si no existe, siempre queda la duda si no existirá en un paquete que vayamos a usar después. Por ejemplo, usamos a menudo \longrightarrow y nos gustaría abreviarlo como \lra ¿Existirá ya este comando en LaTeX? Usando el paquete at, nuestro comando se llamaría @lra y podemos estar seguros de que no entraremos en conflicto con otros posibles comandos.

    Además, permite definir comandos delimitados por cualquier par de caracteres, por lo que podemos usar, por ejemplo @/.../ como abreviatura de \emph{...}, o @*...* como abreviatura de \textbf{...} (de hecho, este par de ejemplos vienen ya predefinidos al cargar al paquete at). Sin duda se le pueden encontrar interesantes aplicaciones.

  • cmtt. Este paquete arregla un problema que puede aparecer al usar los tipos computer modern teletype (\texttt{...}), ya que al parecer la codificación de esta fuente no es estándar y algunos caracteres pueden salir cambiados.
  • doafter. Esta es una de esas utilidades que sólo tienen sentido para los programadores de TeX avanzados. Yo no entiendo para qué sirve :-)
  • footnote. Aquí se reimplementa el comando \footnote para que se comporte mejor que el que viene con latex. En particular, el nuevo \footnote admite texto verbatim, y se puede usar en lugares donde el comando original no se podía (como en parboxes)
  • mdwlist. Esta es una de esas pequeñas joyas. Permite configurar los entornos de tipo lista (itemize, description,...) para que sean más compactos. También ofrece varias soluciones al problema de que, en el entorno description el término a definir sea demasiado largo (en mi opinión, los description generados por LaTeX son más bien feos).
  • mdwmath. Este minipaquetito implementa una variante de \sqrt que omite la raya horizontal encima del operando. También proporciona algunos símbolos matemáticos.
  • mdwtab es una reimplementación completa y nueva de los entornos tabular y array, con muchas opciones interesantes. Merece la pena leer con detenimiento la documentación.
  • sverb permite listar código "verbatim", y leerlo desde un fichero. También proporciona un entorno demo que muestra código LaTeX junto con su resultado, ideal para escribir manuales sobre LaTeX
  • syntax ofrece un conjunto de macros para "dibujar" diagramas de gramáticas tipo BNF. Este tipo de diagramas abundan en la propia documentación de la suite mdwtools
 
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.
 
2.10.03

Javier M. Mora me ha dado a conocer este interesante documento: The TeX ruler, una colección de reglas graduadas de interés para el tipógrafo.
 
 

Powered by Blogger