Notxor tiene un blog

Defenestrando la vida

Minicurso de LaTeX para psicólogos II

2021-03-22

En la anterior entrega hablé por encima de las ventajas que tiene un sistema de generación de documentos escritos como LaTeX sobre los más extendidos editores de documentos. Como principal inconveniente conté que LaTeX no te deja hacer lo que quieres directamente. Y también expliqué por encima que, efectivamente, los cambios que haremos sobre nuestro documento tienen que ser meditados y conscientes. Para ello, se utiliza el concepto de paquete, cualquier cosa, cualquier necesidad que tengas, a la hora de producir un documento impreso, seguramente ya lo habrá tenido alguien y habrá creado un paquete que facilite la edición. Por tanto, en esta ocasión hablaré sobre paquetes, sobre la estructura de los documentos y sobre las fuentes y sus características.

Los paquetes y las fuentes

Ya vimos en la anterior entrega que utilizábamos varios paquetes para poder trabajar: uno cambiaba el idioma de inglés, ─el idioma por defecto─, a español, babel; otro cambiaba el formato del texto, ─ASCII por defecto─, a utf8 (o latin1) que utilizan los ordenadores modernos, inputenc; por último, otro modificaba las fuentes de salida, de forma similar a como las cambia para la entrada el paquete anterior, fontenc.

Con la prueba que hicimos vimos un documento impreso que aunque, correcto formalmente, tenía un aspecto un poco desfasado. La fuente que utiliza es antigua, no se me ocurre otra palabra para definirla. ¿La podemos cambiar? ¿Podemos cambiar el tamaño?

Vamos a cambiar la fuente básica del documento a una de las fuentes que más utilizo. Para ello sólo tengo que añadir un línea en la cabecera de nuestro documento que importe la fuente que queremos a nuestro trabajo:

\usepackage{palatino}

Al final del documento pondré un enlace al fichero TeX tal y como quede después de todos los cambios que vaya haciendo. De momento vamos a concentrarnos en el cambio de fuente. Por ver comparados los dos resultados, los pongo juntos:

comparacion-fuentes.png

Como se puede ver, palatino (a la izquierda) es un tipo de fuente más legible y bonita que la configurada por defecto. La letra se ha cambiado en todo el documento, ya veremos otras florituras como cambiar el tipo en las cabeceras. ¿A alguien le ha pasado alguna vez que han querido cambiar la fuente de su documento y ésta cambia unas veces sí y otras no? En LaTeX no pasa, cambia todo porque todo el texto es del mismo estilo y los cambios que tiene que hacer los marcas sólo en las partes donde es necesario. Sin embargo, en un editor de documentos es posible que un párrafo esté marcado como cuerpo de texto mientras el siguiente sea párrafo normal... cuando ambos coinciden no hay problema, pero si modificas el formato de párrafo normal y hay párrafos marcados como cuerpo de texto que no has visto, resulta que tienes que ir párrafo a párrafo haciendo el cambio.

¿Queda mejor el cambio de letra? Sí, pero he probado yo a hacerlo y me ha dado un error... Es posible, comprueba que tienes instalado el paquete de la fuente Palatino. Recuerda que LaTeX no usa las fuentes del sistema sino las propias y aunque tengas la fuente instalada en el sistema se producirá un error si no está instalado el paquete de LaTeX. Tienes que comprobarlo en el gestor de paquetes de LaTeX.

Otra de las cosas que pueden resultar chocantes es la forma de definir los márgenes y la geometría de la página. Supongo que os resultó extraño estar definiéndolas haciendo sumas y restas como en nuestro encabezamiento y teniendo en cuenta el tamaño de la zona impresa.

\textheight = 21cm          % largo del texto impreso (por defecto 19cm)
\textwidth = 18cm           % ancho texto impreso (por defecto 14cm)
\topmargin = -1cm           % margen superior (por defecto 3cm): 3-1=2cm
\oddsidemargin = -1.5cm     % margen izquierdo (por defecto 4.5cm): 4.5-1.5=3cm

Hay un paquete que nos facilita las cosas a la hora de lidiar con estos aspectos: geometry. Con este paquete podemos sustituir todo lo anterior por una sola línea:

\usepackage[a4paper,margin=3cm]{geometry}

Por supuesto, geometry es más complejo que sólo lo que he puesto ahí, no tienes más que mirar su documentación. Podemos definir cada margen de forma separada con las opciones top, bottom, left y right, el espacio para cabeceras y pies, guardar diversas geometrías de página y llamarlas según lo necesitemos, etc. Todas esas opciones pasan de lo que es el uso básico. Pero es bueno tener presente que podemos utilizar el comando \newgeometry para definir las opciones de la geometría para aquellas páginas que se necesite cambiar. Toda la geometría depende también de las opciones del documento. Lo que hace a4paper en las opciones del paquete es definir el A4 como el tamaño de papel de la geometría en adelante. Lo normal, es que lo hayamos definido al declarar el documento.

Por ejemplo, el tamaño de texto que utiliza LaTeX por defecto es 10pt, como dije en el artículo anterior. Lo podemos ajustar en las opciones de documento:

\documentclass[a4,11pt,doubleside]{article}

Las opciones del documento se definen como en cualquier paquete. A mí me gusta pensar que, al fin y al cabo, LaTeX es un paquete que funciona sobre TeX.

Ahí, por ejemplo, se define que utilizamos papel A4, con una fuente de 11pt y que el documento se imprimirá a doble cara, es decir, que la geometría de las páginas pares e impares será distinta.

Los tamaños de las fuentes pueden ser 10pt, 11pt y 12pt. Si necesitamos jugar con otros tamaños, podemos utilizar el tipo de documento memoria: \documentclass{memoir}, donde se pueden definir los siguientes tamaños: 9pt, 10pt, 11pt, 12pt, 14pt, 17pt, 20pt, 25pt, 30pt, 36pt, 48pt y 60pt. Esos son los tamaños básicos, que se pueden modificar con los comandos relativos que vimos ya en el artículo anterior y que podemos ver en el ejemplo anterior.

Además, podemos modificar con qué fuentes vamos a trabajar. Para ilustrarlo he añadido a nuestro fichero de prueba la siguiente sección1:

\section{Fuentes}

Podemos, de todas formas, hacer un cambio de fuente temporal, si es lo
que queremos.

\begin{table}[!h]
 \centering
 \begin{tabular}{l l}
\hline
  \textbf{Comando} & \textbf{Resultado} \\
\hline
 \verb|{\fontfamily{pag}\selectfont Avant Garde}|              & {\fontfamily{pag}\selectfont Avant Garde} \\
 \verb|{\fontfamily{fvs}\selectfont Bitstream Vera Sans}|      & {\fontfamily{fvs}\selectfont Bitstream Vera Sans} \\
 \verb|{\fontfamily{pbk}\selectfont Bookman}|                  & {\fontfamily{pbk}\selectfont Bookman} \\
 \verb|{\fontfamily{bch}\selectfont Charter}|                  & {\fontfamily{bch}\selectfont Charter} \\
 \verb|{\fontfamily{cmr}\selectfont Computer Modern}|          & {\fontfamily{cmr}\selectfont Computer Modern} \\
 \verb|{\fontfamily{pcr}\selectfont Courier}|                  & {\fontfamily{pcr}\selectfont Courier} \\
 \verb|{\fontfamily{phv}\selectfont Helvetica}|                & {\fontfamily{phv}\selectfont Helvetica} \\
 \verb|{\fontfamily{fi4}\selectfont Inconsolata}|              & {\fontfamily{fi4}\selectfont Inconsolata} \\
 \verb|{\fontfamily{lmr}\selectfont Latin Modern}|             & {\fontfamily{lmr}\selectfont Latin Modern} \\
 \verb|{\fontfamily{lmss}\selectfont Latin Modern Sans}|       & {\fontfamily{lmss}\selectfont Latin Modern Sans} \\
 \verb|{\fontfamily{lmtt}\selectfont Latin Modern Typewriter}| & {\fontfamily{lmtt}\selectfont Latin Modern Typewriter} \\
 \verb|{\fontfamily{pnc}\selectfont New Century Schoolbook}|   & {\fontfamily{pnc}\selectfont  New Century Schoolbook} \\
 \verb|{\fontfamily{ppl}\selectfont Palatino}|                 & {\fontfamily{ppl}\selectfont  Palatino} \\
 \verb|{\fontfamily{ptm}\selectfont Times}|                    & {\fontfamily{ptm}\selectfont  Times} \\
 \verb|{\fontfamily{put}\selectfont Utopia}|                   & {\fontfamily{put}\selectfont  Utopia} \\
 \verb|{\fontfamily{pzc}\selectfont Zapf Chancery}|            & {\fontfamily{pzc}\selectfont  Zapf Chancery} \\
\hline
 \end{tabular}
 \caption{Colección de fuentes}
\end{table}

Aunque todavía no hemos visto cómo hacer tablas, he utilizado una para mostrar el comando y su resultado. Si intentas copiar y pegar el código anterior, comprueba que tienes instaladas las fuentes que se usan aquí. El resultado es el siguiente:

Captura-pantalla_tipos-fuente.png

Si estás acostumbrado a utilizar las fuentes del sistema y prefieres utilizarlas, también se puede, pero no con TeX o LaTeX directamente, sino con los derivados XeTeX o XeLaTeX. Como esos aspectos se salen fuera de la intención del minicurso de LaTeX, lo dejo para que lo investiguéis.

De momento, con los comandos que nos proporciona LaTeX para manejar las fuentes estamos servidos. Por ejemplo, para definir la fuente general, como hemos visto, utilizamos el paquete que queramos. Los más habituales son:

\usepackage{pslatex} \usepackage{bookman}
\usepackage{helvet} \usepackage{palatino}
\usepackage{newcent} \usepackage{pxfonts}
\usepackage{txfonts} \usepackage{concrete}
\usepackage{cmbright} \usepackage{fourier}
\usepackage{mathptmx} \usepackage{mathpazo}

Por supuesto, hay un extenso catálogo de fuentes que podemos utilizar. No es necesario tenerlas todas instaladas, pero cuando las necesitemos lo que tenemos que instalar su paquete correspondiente. Estos paquetes suelen proporcionar comandos específicos y opciones para seleccionar entre las variantes de la fuente cuál se utilizará. Es muy recomendable echarle un vistazo si queremos hacer algún tipo de floritura como veremos ahora. Sin embargo, la mayoría de las veces será suficiente con incluir el paquete y no preocuparnos demasiado del aspecto que tendrá el documento, porque normalmente las opciones por defecto suelen arrojar buenos resultados.

Atributos de las fuentes

Podía ser titulado este apartado, cómo cometer todos los errores que cometemos en los editores de documentos respecto a las fuentes. Pero quedaba un título muy largo para una sección. Como digo, no se suelen utilizar los atributos de las fuentes directamente, salvo cuando ya estamos en condiciones de crear, o si lo prefieres programar, nuestros propios estilos para el documento. Lo pongo aquí para que se vea que se puede hacer lo mismo, pero con algo más de esfuerzo.

Todas las fuentes en LaTeX tienen cinco atributos:

Atributo Significado
encoding Valore numéricos de los caracteres
family Familia de la fuente
serie Representa el peso de la fuente
shape Es la forma de la fuente
size Tamaño de la fuente

El encoding lo podemos seleccionar con el comando \char, por ejemplo, \char126 nos devolverá un carácter ~. En TeX y en LaTeX el número no puede sobrepasar el valor 255, pero en XeTeX o XeLaTeX se puede utilizar el código utf en hexadecimal.

En la lista que pusimos antes de las fuentes ya utilizamos el comando \fontfamily y podemos ver cómo funciona. No voy a darle más vueltas, sólo hay que mirar los ejemplos anteriores.

La serie de la fuente se determina con:

Valor Significado
\fontseries{} Peso de la fuente
m Medium
b Bold
bx Bold extended
sb Semi-bold
c Condensed

La forma puede ser:

Valor Significado
\fontshape{} Forma de la fuente
n Normal
it Itálica
sl Slanted, oblicua
sc Small Caps

El tamaño necesita un parámetro adicional al tamaño de la fuente, que es el interlineado. Es decir, el tamaño de la separación entre líneas del texto. Un valor de 1 especifica una separación idéntica al tamaño de letra que definimos. Por tanto, la forma en que lo haremos será \fontsize{pt}{1}, dónde pt indica el tamaño en puntos que queremos para nuestra fuente. Por poner un ejemplo, si escribimos en nuestro documento:

{\fontfamily{bch}\fontsize{30}{1}\fontshape{sc}\selectfont{Qué pasada!}}\normalfont
Tengo todo el poder en la punta de mis dedos.

Por explicar un poco más el comando que está escrito encerrado entre {}:

\fontfamily{bch}
Define la familia utilizada a Charter.
\fontsize{30}{1}
Establece un tamaño de 30pt con un interlineado de 1.
\fontshape{sc}
El texto se escribirá en small caps (pequeñas mayúsculas).
\selectfont
recoge los parámetros anteriores y se los aplica al elemento {Qué pasada}.

Obsérvese la vuelta al tipo de fuente general del documento con el comando \normalfont. Con estas pocas líneas obtendremos un resultado tal que:

Captura-pantalla_cambio-fuente.png

Si a todo ésto le añadimos que podemos producir un salto de línea donde queramos con el comando \\ o un salto de página con \pagebreak, ya podemos cometer todos los errores que hacemos cuando utilizamos un editor de documentos sin ningún tipo de problemas.

Este tipo de cosas no cuentan como aspectos básicos de LaTeX, no te preocupes si hay algo que se te escapa. Lo cuento porque es importante que seas consciente de dos cosas:

  1. Puedes hacer muchas más cosas de las que a priori dan a entender los artículos introductorios que leo por ahí. Pero hacerlas implica un gasto de energía, que impedirá que lo hagas si no es estrictamente necesario.
  2. Cualquier cosa que necesites seguramente ya estará implementada en un paquete, mira en la documentación, averigua por Internet. Seguro que alguien más avanzado necesitó algo parecido e implementó un paquete o preparó una plantilla, que te facilitarán la vida.

Estructura de los documentos y referencias internas

La estructura de los documentos viene definida por su tipo, como dijimos en el artículo anterior. La forma más habitual de tener una referencia del contenido de nuestro documento es hacer una tabla de contenidos que nos muestre dicha estructura. Simplemente tenemos que ir definiendo las cabeceras con el comando apropiado. Dichas cabeceras se definen con los siguientes comandos:

Comandos Significado
\part Agrupación superior de contenidos
\chapter Capítulo
\section Sección
\subsection Apartado
\subsubsection Subapartado
\paragraph Punto
\subparagraph Subpunto

Estos comandos tienen su equivalente con *, la diferencia es que cuando definimos un capítulo con \chapter*{Nombre}, el capítulo y sus apartados internos no se mostrarán en la tabla de contenidos del documento.

Los editores de documentos nos han acostumbrado a citar nuestros apartados, figuras, tablas con referencias vagas. Si citamos la sección 2.3 y resulta que luego decidimos añadir otro apartado delante de esa sección, la numeración cambia y tenemos que repasar el texto para modificar todas esas referencias que hayamos puesto a mano. Eso es un hecho que nos coarta a la hora de redactar de forma directa nuestras referencias con los editores de documentos.

LaTeX nos proporciona el comando \label{} para señalar el objeto referenciado. Por ejemplo, en nuestro documento de pruebas, he añadido un par de etiquetas. La primera en la sección y la segunda en la tabla:

...
\section{Fuentes}\label{sec:fuentes}
...
   \caption{Colección de fuentes}\label{tab:fuentes}
...

Puedes utilizar cualquier nombre que se te ocurra para las etiquetas, como a32EEfun4, siempre que luego te acuerdes del mismo. Lo más racional es llamar a las cosas por un nombre significativo. En el ejemplo, quiero referenciar un apartado que habla sobre fuentes y una tabla que las muestra. Si las dos etiquetas fueran fuentes no se podría distinguir a cual de las dos te refieres. Por eso es muy interesante utilizar el truco de anteponer en la etiqueta un preámbulo sec:, o fig:, o tab: según el tipo de objeto al que queremos referenciar. Como digo es voluntario, pero es una forma de que sepamos a primera vista, si estamos referenciando una sección de texto, una figura o una tabla, respectivamente.

Los comandos de referencia son dos: \ref y \pageref. El primero nos devolverá el número del objeto, por eso \label debe estar anexado al título del apartado o al caption de la tabla o figura, que son los que conocen dicho número. Para ver correctamente el resultado de las referencias necesitaremos repetir la compilación del documento. La primera pasada lo que hace LaTeX es crear un fichero auxiliar donde guarda los números de todas las etiquetas y la segunda pasada los coloca en su lugar. Si nos quedamos con el documento que genera corriendo sólo una vez veremos algo así:

Captura-pantalla_ref-incompletas.png

Podemos apreciar que utiliza el conjunto ?? para indicar que le falta un hervor todavía. Después de dárselo ya veremos algo como:

Captura-pantalla_ref-completas.png

Resulta un poco laborioso si lo hacemos desde la línea de comandos. La situación más compleja que se nos puede presentar es generar un documento que tenga hacer una tabla de contenidos, o índices de tablas y/o figuras y cuente además con bibliografía y múltiples enlaces internos. En este caso tendremos que utilizar cuatro pasos:

  1. Generación, con pdflatex, del primer pdf y de los archivos auxiliares de índices, referencias y otros enlaces. Se analizan todas las referencias menos las citas bibliográficas.
  2. Generación del segundo pdf con la sustitución de todos los enlaces e índices y referencias incrustadas, salvo la bibliografía.
  3. Generar el índice de citas bibliográficas con la herramienta adecuada. La tradicional es bibtex, pero en la actualidad hay otras herramientas como biber, biblatex o natbib. Ya hablaré sobre bibliografía en otra entrega de este minicurso.
  4. Generar el pdf definitivo con las citas bibliográficas y la bibliografía perfectamente ensambladas.

Si estás utilizando algún editor dedicado, seguramente hará todos los pasos por ti, o por lo menos, como hace Emacs avisará de que hay una tarea más que realizar y cuál es.

Cabeceras de sección demasiado largas

Hay ocasiones que necesitamos ponerle a una sección un título perfectamente descriptivo de lo que es. Lo más habitual es que un título siendo descriptivo será también demasiado largo y nos estropee los índices o los encabezados de página2. Por ejemplo, si definimos una cabecera de una sección tal que:

\section{Esto es un título muy largo y muy necesario para demostrar
  que mi capacidad de síntesis es mediocre tirando a nula}

obtenemos, como es natural, un índice y un título con este aspecto:

Captura-pantalla_indice-largo.png

En el texto nos puede servir, al fin y al cabo no suele haber elementos alrededor que se descuadren por tener un vecino indeseable como ese. Sin embargo, en el índice puede resultar molesto tener un elemento que ocupa más de una línea. Si en lugar de definir la cabecera como hemos visto antes, lo definimos así:

\section[Un título largo]{Esto es un título muy largo y muy necesario para demostrar
  que mi capacidad de síntesis es mediocre tirando a nula}

Lo único que hemos cambiado es que hemos añadido una opción de título. El resultado se verá como sigue:

Captura-pantalla_indice-acortado.png

Como podemos apreciar, el título en la página sigue mostrándose, de manera idéntica, en toda su extensión. Sin embargo, en el índice se ha empleado el título alternativo que le hemos proporcionado en la opción.

Resumen

Creo que este curso introductorio se me está yendo de las manos, cuento tres tontás y el resto se va a la siguiente entrega. Apenas he hablado un poco sobre las fuentes y sobre las cosas que no hay que hacer... o sí, que nunca se sabe, porque poder se pueden hacer.

Pero también hemos visto cómo se utilizan los comandos más habituales. Las pruebas las voy colocando en un archivo que podéis descargar también en el siguiente enlace:

Footnotes:

1

Recuerda siempre que debe estar delante del cierre de documento \end{document}.

2

Que ya veremos que se puede hacer que las cabeceras y los pies de página se pueden configurar con diversa información y diseño.

Categoría: latex

Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.