Lo que he aprendido: crear una lista de símbolos en Latex sin enloquecer

Hoy os voy a contar lo que llevo haciendo desde ayer a la tarde y que finalmente he conseguido finiquitar esta mañana: crear una lista de símbolos decente en Latex sin volverme tarambana perdida. La movida aquí es que hay como setencientas opciones para hacerla, todas con sus cosas buenas y malas. Yo quería que cumpliera varias características:

  1. Que cambiando la definición del símbolo me cambiase todos los símbolos del documento

  2. No tener que instalar ningún programa adicional

  3. Opciones de configuración

  4. Que fuera integrable en mi sistema loco de Latex – Markdown – Pandoc

Con una búsqueda rápida en el Interneto encontré varias maneras de hacerlo. Por una parte tenemos el paquete glossaries, heredero del antiguo glossary. Pero es empezar a leerte la guía para tontos y como que te echa para atrás:

The glossaries package is very flexible, but this means that it has a lot options, and since a user guide is supposed to provide a complete list of all the high-level user commands, the main user manual is quite big. This can be rather daunting for beginners.

Además, usa makeindex para no sé qué cosas locas y hay que compilar y hacer no sé qué otras mierdas que paso de aprender1. Si estáis animados podéis poneros a ello y contarme cómo va el tema, pero a mí solo de pensar en cómo integrar eso en el Makefile y tal me daban sudores fríos.

Bien, busquemos algo más simple. Encontré symlist, que fue descartado por no ser parte de mi distribución de Latex (¡simplicidad!¡simplicidad!) y nomencl que al igual que glossaries usa makeindex (y pasando). También encontré gente que hace un tablamen gigante, pero eso puede ser una ida de olla galáctica como haya que cambiar un símbolo en todo el documento.

Nos quedamos por lo tanto con la última alternativa que encontré: listofsymbols, simple, eficaz e incluido en mi distribución de Latex. Si vais a sus explicaciones encontrareis algo parecido a esto (que yo he modificado ligeramente):

\documentclass{article}

\usepackage[draft]{listofsymbols} % cambiar por final en el definitivo
\begin{document}

% Definición de símbolos [Definición]{Nombre que usaremos}[Símbolo]
\opensymdef
\newsym[Energy]{symE}{E}
\newsym[Mass]{symm}{m}
\newsym[Speed of light]{symc}{c}
% Usar \ensuremath en símbolos matemáticos
\newsym[Definition]{symlam}{\ensuremath{\lambda}}
\closesymdef

% Crear lista de símbolos
\listofsymbols

% Uso en ecuaciones
\begin{equation}
\symE=\symm \symc^2
\end{equation}

\begin{equation}
\symlam
\end{equation}

% Uso en letra
where \symE is the energy \ldots

\end{document}

Que da lugar a algo como esto:

symb

La única cosa a destacar aquí es que tenemos que usar la opción draft al principio para que nos genere la lista de símbolos provisional que incluye el nombre que le hemos dado y cuando este todo perfecto le pondremos la opción final2. Lo que os enseño en la imagen es el resultado una vez activada la opción final.

¡Ya casi lo tenemos! Nos faltan dos cosas: cambiar un poco el formato e integrarlo en el proceso, para ello necesitamos hacer unos cambios en la plantilla y en el bloque YAML3.

Cambios en la plantilla

Aquí tenemos que tener en cuenta varias cosas, unas sobre incluir la propia lista de símbolos y otras sobre el formato. La primera es simple, para mí lo más lógico es hacer un archivo tex aparte en el que definiremos los símbolos y luego incluirlo con \input{}.

La segunda ya es un poco más compleja. El problema es que por su definición4, al compilar nos considera que la lista de símbolos es una sección y no un capítulo. Esto está perfecto si estamos escribiendo un artículo, pero es una castaña si estamos escribiendo la tesis, por ejemplo. Para ello la mejor opción que se me ha ocurrido es pisar el comando que crea el título por uno que cree un título de capítulo y luego marcarlo como capítulo para que cambie los encabezados y tal correctamente.

En resumen, en el preámbulo añadimos:

\usepackage[draft]{listofsymbols}

% Cambiar el estilo a capítulo 
{\renewcommand{\symheading}{\chapter*{\symheadingname}} 

Y en el cuerpo del documento:

% List of symbols

\newpage % para que no arrastre encabezados de la seccióna anterior
\chaptermark{List of symbols} % marcar como capítulo para que cambie encabezado
\input{symbols} % incluimos el archivo de definiciones que tenemos aparte
\listofsymbols
\addcontentsline{toc}{chapter}{List of symbols} % lo añadimos al índice

Bloque YAML:

Para no andar abriendo la plantilla todo el rato para cambiar las opción de draft o final, podemos definirlo como variable e introducirlo en el bloque YAML, yo le he llamado los (de list of symbols) para que tenga cierta coherencia con las opciones lof (list of figures) y lot (list of tables).

En la plantilla hacemos:

\usepackage[$los$]{listofsymbols}  

Y en el bloque o el archivo YAML añadimos:

los: draft

Luego ese draft lo cambiaremos por la opción que nos parezca.


Pues hasta aquí hemos llegado. Si esto os parece una locura no os preocupéis, que cuando acabe de escribir la tesis entera con todo el formato a mi gusto pondré todos los archivos de configuración en Github y estará todo mascadito 🙂


  1. Ver característica 2 
  2. En las instrucciones pone algo de un archivo auxiliar sty que a mí no me crea, supongo que porque traduzco de Markdown a pdf directamente. Lo miraré a ver y os contaré en el futuro 
  3. Si usáis Latex a pelo podéis ignorar la parte del bloque YAML, pegáis las cosas de Latex donde corresponda y a correr. 
  4. Si miráis el código del paquete pone {\newcommand{\symheading}{\section*{\symheadingname}} 
Anuncios

2 pensamientos en “Lo que he aprendido: crear una lista de símbolos en Latex sin enloquecer

  1. Pingback: Lo que he aprendido: trucar paquetes de Latex | Onda Hostil

  2. Pingback: Compilación: escribir la tesis | Onda Hostil

¡Opina sin miedo! (Puedes usar Markdown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s