Un documento científico

Vamos a hablar del caso en el que LaTeX da lo mejor de sí mismo: un documento científico. Con esto me refiero a libros técnicos, tesis, artículos… ya me entendéis. No tienen por qué hablar necesariamente de ciencia, si me centro más en ellos es porque es mi campo.

La característica esencial de un documento científico es su formato rígido que en muchas ocasiones nos viene impuesto, ya sea por una revista o universidad o por las propias costumbres de nuestra disciplina. Por ejemplo, una tesis suele estar dividida en capítulos, debe tener referencias bibliográficas con un estilo determinado y se inicia con un índice general, uno de tablas y otro de figuras así como con un glosario de términos. También suele llevar un resumen del contenido al principio y se separa el trabajo adicional en apéndices. Todo esto implica diferentes formatos para las partes (numeración de las páginas y secciones, estilo de los encabezados…) y cierta planificación. Sin planificar se puede uno volver completamente tarumba, lo digo conocimiento de causa, el control de versiones me salvó más de una vez de romper la tesis sin remedio.

Es por ello que primero veremos cómo organizar el documento en cuestión y luego haremos un índice, un glosario y hasta unas lista de referencias.

División del documento

Vamos a empezar organizándonos. Lo primero que tenemos que hacer es elegir el tipo de documento, empezando por preguntarnos si es un documento corto o largo ya que el formato del documento varía en gran medida según su longitud:

Para el caso de un documento largo, si estamos usando las clases book, memoir o derivadas, aparte de los diferentes niveles de títulos tenemos a nuestra disposición unos comandos para identificar las distintas partes del documento y así darles estilos específicos. Todos ellos afectan desde que los escribimos hasta que aparece el siguiente:

report carece de estos comandos el pobrecillo.

Por supuesto, todo lo que he comentado sobre los estilos se puede modificar con relativa facilidad, pero sin tocar absolutamente nada podemos conseguir un documento con bastante lógica.

Otro tema a tener en cuenta es la división del contenido en diferentes archivos. Hasta ahora hemos escrito todo junto, pero cuando estamos escribiendo un documento más o menos largo este sistema no es muy apropiado. LaTeX nos permite escribir en diferentes archivos que luego juntaremos para crear el documento final. De esta manera podemos tener un archivo con la definición del documento y el preámbulo desde el que llamaremos a otros archivos en los que nos ocuparemos del contenido propiamente dicho.

Para ello tenemos dos opciones:

Vamos a ver un ejemplo de uso para entenderlo mejor:

\documentclass[a4paper,11pt]{book}

  % Cargamos el preámbulo que tenemos escrito en otro archivo
  \input{preámbulo}
  
  % Elegimos qué capítulos queremos que se compilen
  \includeonly{cap1,cap3} % sin espacios!

\begin{document}

  % Cargamos la portada desde la Carpeta contenido
  \input{Contenido/portada}

  % Cargamos los capítulos desde la carpeta Contenido.
  % Los capítulos capX.tex no llevan ni preámbulo ni definición del
  % documento, solo órdenes que irían tras \begin{document}
  
  \include{Contenido/cap1} % cargamos cap1.tex
  \include{Contenido/cap2} % cap2 no aparecerá en el resultado
  \include{Contenido/cap3} % mantiene la numeración como si cap2.tex estuviera incluido

\end{document}

Ya que tenemos comandos que nos permiten incorporar contenido desde otros archivos podemos aprovechar para organizar nuestro material en carpetas para el contenido, el estilo o las imágenes. Incluso cabe la posibilidad de escribir las tablas largas en un archivo aparte y llamarlas con \input{} cuando corresponda. Cuando sepamos más sobre los diferentes tipos de archivos os contaré cómo me organizo yo.

Índices

Pasemos a hablar de los índices, uno de los motivos por los que amo LaTeX. ¡Los índices de contenido, tablas, figuras o código se hacen solos! Solamente tenemos que escribir el comando correspondiente y ya está. La única cosa que tenemos que tener en cuenta es que los índices no se incluyen por defecto en el índice de contenido, tenemos que exigirle a LaTeX que los añada.

Os pongo un ejemplo de cómo se crean los índices y cómo se incluyen en el índice, creo que el funcionamiento es bastante claro:

% Índice de contenido
\addcontentsline{toc}{chapter}{Índice general}
\tableofcontents

% Índice de tablas
\addcontentsline{toc}{chapter}{Índice de tablas}
\listoftables

% Índice de figuras
\addcontentsline{toc}{chapter}{Índice de figuras}
\listoffigures

Tenemos que tener en cuenta que hay que compilar el documento dos veces para que LaTeX fabrique los índices, la primera de ellas escribe los archivos auxiliares necesarios y la segunda los lee y crea el índice en concordancia.

Como todo en LaTeX, los índices se pueden personalizar. Por ejemplo, para el caso del índice de contenido, se puede cambiar la profundidad de los tres niveles que tiene por defecto al número que a nosotros nos parezca mejor:

\setcounter{tocdepth}{NIVEL}
% NIVEL -1: part, 0: chapter, 1: section, etc.

También es interesante darle un título corto para los índices como argumento opcional a \caption, \chapter y otros comandos, por ejemplo:

\begin{figure}
  \caption[Título corto para el índice]{Título ultralargo que describe la figura en el documento}
    \includegraphics{RUTA}
\end{figure}

Para acabar con los índices una cosa bastante chula: si usamos el paquete hyperref los elementos de los índices se vuelven clicables. Hasta podemos poner los enlaces de colorines, en mi tesis, por ejemplo, eran rosas gracias a esta línea:

\usepackage[colorlinks=true,linkcolor=magenta]{hyperref}

Dicen en el manual de hyperref que es mejor que sea el último paquete que cargamos por si acaso colisiona con algún otro.

Glosario y unidades

Otro tema que nos interesa a nosotros los científicos es poder hacer una lista de símbolos, letras griegas o acrónimos con facilidad. Y facilidad no es coger un documento científico de 350 páginas y apuntar en un papelito todos los símbolos que hemos utilizado con su respectiva definiciónYo me sé de uno que casi gasta el alfabeto griego en su tesis y tenía subíndices y superíndices simultáneamente para hacer referencia a diferentes variables. Le mando un beso desde aquí..

Para el tema de los glosarios, nomenclaturas o listas de símboloses muy importante la planificación. Muy importante. Lo mejor es configurar todo antes de empezar a escribir, así aprovechamos las ventajas que tiene usar un paquete de este estilo y de paso no nos volvemos locos.Voy a usar lista de símbolos y glosario indistintamente para referirme a una lista de cosas con su respectiva definición que ponemos al inicio del documento para ayudar al lector a entender lo que hemos escrito. Por cierto, digo un paquete porque hay unos cuantos con este propósito, aunque todos ellos tienen dos características en común:

Veamos qué opciones tenemos. Por una parte están los que usan el programa makeindex lo que implica un paso extra a la hora de compilar: nomencl y glossaries, heredero del antiguo glossary y que tiene un manual de 250 páginas. Por otro, tenemos al mucho más modesto listofsymbols que tiene menores capacidades pero no nos dificulta la compilación.

Cuando escribí la tesis no tenía ganas de liarme la manta así que me quedé con listofsymbols que era sencillito y eficaz. ¡Al final hasta me atreví a añadirle funcionalidades con mis limitadas habilidades! Os dejo un ejemplo de uso de listofsymbols que creo que se entiende por sí solo:

\documentclass{article}

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

    % Definición de símbolos [Definición]{Nombre que usaremos}[Símbolo]
    \opensymdef
    \newsym[Energía]{symE}{E}
    \newsym[Masa]{symm}{m}
    \newsym[Velocidad de la luz]{symc}{c}
    % Hay que usar \ensuremath en los símbolos matemáticos
    \newsym[Longitud de onda]{symlam}{\ensuremath{\lambda}}
    \closesymdef

    % Crear lista de símbolos
    \listofsymbols

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

    % Uso en texto
    donde \symE es la energía \ldots

\end{document}

En lo que respecta a nomencl y a glossaries, aunque me parecen interesantes nunca los he usado así que poco más os puedo decir aparte de este pequeño estado del arte. En las referencias tenéis más información si os animáis a usarlos.

Algo parecido nos pasa con las unidades, por eso voy a hablar de ellas en este mismo apartado. En este caso se une al tema de la coherencia la tipografía, una de las mayores preocupaciones de los usuarios de LaTeX del mundoHay hasta una norma ISO sobre cómo dar formato a las constantes, variables, unidades y demás. Y yo he visto a profesores criticar a gente en defensas de proyectos porque no habían puesto recto el símbolo de la derivada. Tiene que haber gente para todo..

Si nuestro principal problema es que las unidades tengan buena pinta, tenemos el paquete units que se ocupa de que nuestras unidades sean tipográficamente correctas. Gracias a él las unidades tendrán el mismo estilo que el resto del texto en el modo texto y serán rectas en el modo matemático; no habrá nunca un salto de línea antes de la unidad, y habrá solo un espacio estrecho (\,) entre el valor y la unidad. Incluso nos crea una fracciones de lo más cucas gracias al paquete nicefrac. Pero la verdad es que lo uso porque tiene uno de los manuales más geniales que he visto yo nunca.

Simplemente lo cargamos en el preámbulo:

\usepackage{units} % Opción 'ugly' para fracciones de texto normal

Y usamos los comandos \unit[VALOR]{UNIDAD} y \unitfrac[VALOR]{NUM}{DEN} tanto en el modo texto como dentro de ecuaciones:

\unit[3]{m}

$\unitfrac[4]{m}{s}$

Si aparte de unidades bonitas queremos garantizar la coherencia en todo el texto tenemos el mucho más potente (y con manual mucho menos gracioso) paquete SIunits. El enfoque de SIunits para las unidades es similar al de los paquetes para hacer glosarios y al que tiene el propio LaTeX para las ecuaciones: usar comandos para las unidades en lugar de texto normal. No voy a entrar en mucho detalle porque es un paquete bastante complejo, pero básicamente nos da unos comandos para dar formato a números, unidades y números con unidades:

% Formato de número
\num[OPCIONES]{NÚMERO}

% Formato de unidad
\si[OPCIONES]{UNIDAD}

% Formato de valor con unidad
\SI[OPCIONES]{VALOR}{UNIDAD}

Podemos o bien escribir las unidades nosotros mismos o utilizar el comando correspondiente:

\si{kg}

\si{\kilogram}

Es interesante porque nos permite representar las fracciones como exponentes negativos y los prefijos como kilo o mili como potencias de 10:

\SI{10}{\kilo\metre\per\hour} % 10 km h^{-1}
\SI[per-mode = fraction]{10}{\kilo\metre\per\hour} % 10 km/h
\SI[prefixes-as-symbols=false]{10}{\kilo\metre\per\hour}  % 10 10^3 m h^{-1}

Todo esto lo podemos configurar en el preámbulo para no tener que escribir tantísimo, claro. Muchas de las unidades tienen además nombres cortos para que no sean tan cansinas de definir.

Referencias bibliográficas

Ahora toca mi parte favorita en lo que respecta a LaTeX y los documentos científicos: el manejo de las referencias bibliográficas. Para ello usaremos un programa diferente pero que va integrado en las distribuciones de LaTeX: el gestor de referencias bibliográficas BibTeX.

BibTeX nos permite tener una base de datos de documentos diversos que podemos citar en el texto y que luego muy amablemente nos listará donde le pidamos con nuestro estilo favorito. Lo mejor es que en esa lista solo aparecerán los elementos que hemos citado y en el orden que queramos independientemente del orden en el que aparezcan en la base de datos.

Además, como no era suficientemente genial, tiene dos ventajas extra: todo va en texto plano y se pueden usar programas libres para generar la base de datos.

Antes de nada una cosilla, usar BibTeX como yo lo uso es la manera más sencilla pero también hay otros paquetes más avanzados como natbib y biblatex e incluso otros programas como Biber, especialmente desarrollado para trabajar con biblatex. Aquí me pasa como con makeindex, se que existen y poco más. En cualquier caso os dejo algunos enlaces en las referencias para que os modernicéis, yo ya no puedo que soy vieja.

Yendo al grano, para mi manera de gestionar la bibliografía necesitamos lo siguiente:

Vamos a hablar un poco sobre la base de datos bibliográfica. Para mí lo más simple es usar un programa con su GUI y guardar todo un .bib. Este archivo no deja de ser texto plano, de hecho, si lo abrimos con un editor de texto normal veremos que cada una de las entradas de nuestra base de datos tiene una pinta como esta:

@Book{Zarraga2017,
  title={Curso no convencional de LaTeX},
  author={Zarraga, Ondiz},
  year={2017},
  note=\url{https://ondiz.github.io/cursoLatex/}
}

No voy a hablar sobre ninguno de estos programas aquí por dos motivos: ya he escrito suficiente tocho y sus manuales están muy bien.

Si no nos gusta usar otro programa, siempre podemos definir la bibliografía directamente en LaTeX:

\begin{thebibliography}{9} % Menos de 9 entradas

\bibitem{Zarraga2017}
  Ondiz Zarraga,
  \emph{Curso no convencional de LaTeX},
  2017.

\end{thebibliography}

En estos dos ejemplos Zarraga2017 es la clave de la entrada bibliográfica y es lo que usaremos para citar ese trabajo en nuestro documento mediante el comando \cite{CLAVE}:

Tal y como dice \cite{Zarraga2017}

Si hemos escrito nosotros la bibliografía a mano con thebibliography, en el documento nos sustituirá \cite{Zarraga2017} por un número. Si estamos usando un archivo .bib, en cambio, tenemos ventajas añadidas ya que podemos pedir un estilo de cita y de referencia bibliográfica concreto. Este estilo está definido en un archivo .bst, tenéis explicados los que BibTeX tiene por defecto aquí. En definitiva, necesitamos estas dos líneas:

% Definimos el estilo bibliográfico
\bibliographystyle{plain} 

% Creamos bibliografía a partir de referencias.bib 
\bibliography{referencias}

Vamos a dejar aquí la bibliografía, es un tema que da para mucho. Espero que esto os sirva como introducción, hay más información en las referencias.

Recapitulación

Hemos visto que la planificación es fundamental a la hora de escribir un documento científico. La planificación se extiende tanto a la organización de los ficheros como a la propia escritura del documento, ya que elegir una manera de hacer las cosas antes de hacerlas nos ayuda luego a la hora de trabajar. Por eso yo me haría unas pocas preguntas antes de escribir la primera letra:

También hemos aprendido que una buena idea para escribir un documento largo es dividirlo en un archivo en el que se define su esqueleto y otros en los que está el contenido propiamente dicho. El esqueleto tendrá una pinta similar a esta:

% Definición del documento
\documentclass[opciones]{tipo}

% Paquetes
\usepackage[opc]{paquete}

% Datos
\title{título}
\author{autor}
\includeonly{cap1}

% Inicio
\begin{document}
  % Título e índices
  \maketitle

  \frontmatter
  \tableofcontents
  \listoftables
  \listoffigures

  % Contenido
  \mainmatter
  \include{cap1}
  \include{cap2}

  % Apéndices
  \appendix
  \include{ap1}

  % Referencias bibliográficas
  \backmatter
  \bibliographystyle{plain}
  \bibliography{referencias}
  % Fin
\end{document}

En definitiva, con este fascículo del curso he intentado hablar un poco de diferentes paquetes y herramientas que tenemos a nuestra disposición a la hora de escribir un documento científico. Me habré dejado cosas en el tintero que espero recuperar en el futuro próximo. De momento ahí están las referencias.

Referencias

\documentclass{book, report, article or letter} en texblog

Regarding the book, report, and article document classes: what are the main differences? en TexExchange

LaTeX Notes: Structuring Large Documents

What is the right order when using \frontmatter, \tableofcontents, \mainmatter, \part, \chapter, \backmatter, \appendix etc? en TexExchange

When should I use \input vs. \include? en TexExchange

10 ways to customize toc/lof/lot

The glossaries package v4.25: a guide for beginners (pdf)

LaTeX glossary and list of acronyms

Nomenclatures en ShareLaTeX

LaTeX tips: Bibliographies

Bibliography in LaTeX with Bibtex/Biblatex

Tame the BeaST (pdf)

Bibliography management with natbib en ShareLaTeX

biblatex in a nutshell (for beginners) en TeXExchange

A BibTeX Guide via Examples (pdf)

Debibify, un colección de estilos de cita


Anterior: Espacio en blanco, Siguiente: Píntame ese código [Contenido]