LaTeX y compañía

Informacion sobre LaTeX y programas relacionados

29.9.03

Rediseñada la sección de enlaces (a la derecha). Como preveo que irá creciendo, le he dado un formato más limpio, y cada enlace cuenta con una descripcion que puede leerse manteniendo el ratón sobre él.
 
27.9.03

MetaPost, otra vez

Pues cada vez van apareciendo más páginas dedicadas a este interesante lenguaje de programación de gráficos, pero son difíciles de encontrar, pues sus autores no se anuncian ni ponen estos documentos en CTAN. Esta vez le toca el turno al MetaPost: A very brief tutorial de Urs Oswald. Tan escondido, que ni siquiera tiene enlace desde su página principal. Este «tutorial» es en realidad una colección de figuras, cada vez más complejas, acompañadas de su fuente y de breves explicaciones. No es para principiantes. Además del tutorial, en la web de Urs Oswald hay también un interesante documento que explica en qué orden se evalúan los diferentes operadores metapost, lo que ayuda a comprender algunos resultados inesperados.

En la misma línea del «tutorial» de Urs, hay una enorme página web con más de 300 ejemplos metapost, cada uno al lado de su código (cuidado, la página es gráficamente intensiva). Gracias a Gustavo por este enlace.

 
26.9.03

Ganando espacio

¿Tienes que limitar el tamaño de tu artículo a un número prefijado de páginas y te pasas por un poco? ¿Imprimes a menudo pruebas de tu trabajo y te fastidia malgastar papel? Las siguientes técnicas pueden ayudarte a reducir un poco el tamaño de tu documento:
  • \usepackage{times,mathptmx} cambia el tipo de letra de tu documento a Times, que es mucho más compacta que la Computer Modern que TeX usa por defecto.
  • \usepackage{paralist} te proporciona entornos más compactos para los itemize, enumerate, etc
  • \usepackage[tiny,compact]{titlesec} hace que los títulos de sección sean más pequeños y tengan menos espacio alrededor.
  • \usepackage{geometry} te permite especificar los márgenes de una forma mucho más cómoda que tratando de manipular directamente las correspondientes variables de LaTeX. Por ejemplo: \geometry{left=1cm, right=1cm, top=1cm, bottom=1cm}
  • Juega con los parámetros que controlan el posicionamiento de los entornos "flotantes" (más información en mi anterior artículo)
  • Modifica la distancia entre líneas. Reducirla un 95% por ciento apenas se notará, pero te hará ganar espacio. Incluso un 90% es tolerable, pues las líneas no llegan a "chocar" unas con otras. Esto lo logras poniendo \renewcommand{\baselinestretch}{0.9}
Si quieres aplicar todo lo anterior a la vez, puedes usar el paquete savetrees que, además de los trucos anteriores, viene con su propio archivo de estilo bibliográfico que utiliza abreviaturas para que la bibliografía también salga más compacta. Por si ello fuera poco, este paquete trae un script en perl que permite hacer los tipos de letra del documento más estrechos (mediante reescalado horizontal y fuentes virtuales), lo que te permitirá ganar un poco más de espacio.
 

Controlando las figuras flotantes

Cuando se introduce material dentro de un entorno figure o table, se está dando a LaTeX carta blanca para que la coloque donde mejor quede, de acuerdo con sus gustos estéticos. Estos gustos dependen de ciertas variables que puedes modificar. Algunas se modifican mediante el comando \renewcommand, mientras que otras son contadores y deben cambiarse con el comando \setcounter.

A continuación va un ejemplo de cómo modificar todas estas variables. Los valores que se espeficican son los que LaTeX usa por defecto, de modo que en este ejemplo particular no estamos modificando nada:

  • Fracción de la página ocupada por los flotantes. Los siguientes parámetros controlan la cantidad de espacio vertical que puede ocupar un flotante, o el texto de una página. En todos los casos se mide en tanto por 1, es decir, dividiendo la altura del flotante entre la altura de la zona de página impresa (\textheight).
    • \renewcommand{\bottomfraction}{.3} Máximo tamaño que puede ocupar un flotante situado en posición "bottom" (parte inferior de la hoja). Por defecto, las figuras que ocupen más del 30%, se dejarán para la hoja siguiente.
    • \renewcommand{\topfraction}{.7} Máximo tamaño que puede ocupar un flotante situado en posición "top" (en lo alto de la hoja). Por defecto, figuras que ocupen más del 70% de la zona de texto, se dejarían para una página aparte, compuesta únicamente de figuras sin texto (lo que se llama una floating page)
    • \renewcommand{\textfraction}{.2} Mínimo tamaño que ha de tener la zona ocupada por el texto en una página en que haya flotantes. Si, debido a que coinciden varios flotantes en la página, la cantidad de texto bajara por debajo del 20% del alto de la página, LaTeX decidirá mover un flotante a otro lugar para poder meter más texto en dicha página. No se recomienda bajar este valor por debajo de .15, pues el texto puede hacerse difícil de leer. Por otro lado es evidente que \topfraction+\textfraction debe ser menor que 1, y lo mismo para \bottomfraction+\textfraction. Violar estos requisitos causará problemas al algoritmo de colocación de flotantes.
    • \renewcommand{\floatpagefraction}{.5} Mínimo tamaño que deben ocupar los flotantes en una floating page. Una página así se compone sólo de entornos flotantes (figuras y tablas), sin texto entre ellas. Por defecto, al menos el 50% de este tipo de páginas debe estar cubierto por flotantes, quedando el resto en blanco. Si la figura fuese más pequeña, se metería en una página normal, con más texto debajo (o encima).
    • \renewcommand{\dbltopfraction}{.7} Lo mismo que \topfraction pero para documentos a doble columna.
    • \renewcommand{\dblfloatpagefraction}{.5} Lo mismo que \dblpagefraction pero para documentos a doble columna.
  • Contadores. Los siguientes contadores limitan el máximo número de flotantes que pueden aparecer en una página, incluso si son muy pequeños y por tanto ocupan una fracción de página permitida por los parámetros anteriores.
    • \setcounter{topnumber}{2} Máximo número de flotantes que pueden aparecer en posición "top" (parte superior).
    • \setcounter{bottomnumber}{1} Máximo número de flotantes que pueden aparecer en posición "bottom" (parte inferior).
    • \setcounter{totalnumber}{3} Máximo número de flotantes que pueden aparecer en total en cualquier página.
    • \setcounter{dbltopnumber}{2} Lo mismo que topnumber, pero para documentos a doble columna.
 

Miles de símbolos para LaTeX

Acaba de ser anunciada una actualización del Comprehensive LaTeX symbol list que, por si aún no lo sabes, es un imprescindible documento que ofrece un exhaustivo listado de todos los simbolos, signos, viñetas, etc. que se pueden obtener desde LaTeX, clasificados por temas. Para cada uno, indica qué paquete es necesario y con qué comando se obtiene.

Entradas relacionadas: ¿Cómo se llama este símbolo?

 
25.9.03

Árboles con Metapost

Buscando cómo dibujar árboles con MetaPost he ido a dar con la página de David Chiang, quien ha implementado un paquete para dibujar árboles, que tiene buena pinta. Curiosamente este paquete no está en CTAN, por lo que debe de ser poco conocido. Actualización: Los enlaces estaban obsoletos.
 
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...
 
19.9.03

Más recursos MetaPost

En la web de Syracuse tienen una sección dedicada a MetaPost que recopila información sobre este lenguaje (la mayor parte en francés). Entre sus secciones resultan especialmente interesantes la galería, con unos increíbles dibujos escherianos, la sección sobre curvas matemáticas y la recopilación de figuras varias. Todas ellas se acompañan del código fuente bellamente formateado.
 
18.9.03

Libros de TeX gratuitos

Algunos libros sobre TeX, que antes sólo se podían conseguir en librerías, están disponibles ahora gratuitamente en formato PDF, puesto que las editoriales han decidido no reeimprimir más y han devuelto los derechos a sus autores, quienes los ceden a la comunidad.

Un par de ellos son TeX for the impatient y TeX by topic

 

Cursillo de MetaPost

Un interesante tutorial sobre Metapost, que apenas ha recibido publicidad, y que realmente merece la pena.
 

\begin

LaTeX es una maravillosa herramienta y cada vez es mayor la documentación existente sobre ella, pero a veces se encuentra muy dispersa. También son muchos los "truquitos" especiales que uno va aprendiendo, a base de toparse con problemas específicos o de leer en diferentes foros cómo otras personas se han topado con ellos y cómo los han resuelto.

He decidido ir almacenando todo este conocimiento para que, al menos, quede depositado en algún lugar más seguro que mi propia cabeza o disco duro. Hoy comienza este proyecto.

 
 

Powered by Blogger