Elementos generados por LaTeX: Líneas y páginas

En el tema 3 estudiamos el documento desde el punto de vista del texto que nosotros escribimos en él (caracteres que forman palabras que se agrupan en párrafos). A partir de estos elementos LaTeX genera líneas y páginas, que constituyen el objeto de estudio de este tema. La diferencia fundamental con el tema 3° se encuentra en que mientras los caracteres, palabras y párrafos los indicamos nosotros expresamente, las líneas y las páginas, en principio, las genera LaTeX de modo automático y las ubica en el lugar que corresponda. Aunque podemos incidir en ellas. Veamos como:

Líneas

Espacios horizontales en las líneas

El espacio entre las letras que componen las palabras y entre las palabras dentro de una línea es determinado automáticamente por LaTeX, que tiene en cuenta no sólo la anchura de cada letra, sino también determinadas combinaciones de letras en las que conviene aumentar o reducir el espacio para mejorar la legibilidad. El espaciado entre palabras dentro de una línea es también uniforme salvo en aquellos lugares en los que la tradición tipográfica exige aumentarlo, como al terminar una frase, o tras algunos signos de puntuación.

Si, por alguna razón, queremos alterar el espacio entre dos palabras concretas, ya hemos visto que de nada serviría escribir varios espacios en blanco consecutivos, pues LaTeX los tratará a todos ellos como uno sólo. Existen, no obstante, un conjunto de comandos que insertan espacios de diferentes longitudes.

Comando Espacio horizontal introducido
\ un espacio en blanco
\thinspace 0,16667 em
\enskip medio em
\enspace medio em
\quad un em
\qquad dos em
\negthinspace -0,1666 em

Sobre la tabla anterior téngase en cuenta que el comando indicado en la primera línea consiste en el carácter de escape (\) seguido de un espacio en blanco (que como tal no se imprime, y hace difícil entender lo que se ha escrito). Asimismo \negthinspace inserta un espacio negativo lo que significa que el cursor retrocede y en parte la próxima palabra se superpone sobre la anterior.

Se observará que en la tabla anterior hay dos comandos que producen el mismo desplazamiento: \enskip y \enspace. La diferencia entre ambos está en que mientras el primero sólo puede funcionar en desplazamientos horizontales, el segundo también puede producir desplazamientos verticales. De hecho, en la lista anterior, todos los comandos cuyo nombre acaba en "space" pueden funcionar indistintamente en el modo horizontal o en el vertical.

Pero esa regla de que los comandos acabados en space producen todo tipo de desplazamientos, sólo se aplica a los comandos de la lista anterior. Hay un comando muy importante, que no esta en esa lista, y cuyo nombre acaba en space que no puede producir más que desplazamientos horizontales: \hspace.

\hspace es el comando más general para insertar espacio horizontal. Inserta exactamente la cantidad de espacio horizontal que se le indique como argumento, sea cual sea, y esté expresada en la unidad que sea. Así, por ejemplo:

Línea de \hspace{2cm} prueba

insertará entre la segunda y la tercera palabra 2 cm. La cantidad indicada con \hspace también puede ser negativa, en cuyo caso el cursor retrocederá y la próxima cosa que se imprima se superpondrá con la anterior.

Si, durante la compilación, el punto en el que habría que aplicar \hspace coincide con el principio de una línea que no sea la primera del párrafo \hspace no hace nada. Si queremos asegurarnos de que el espacio se añadirá en todo caso, hay que utilizar el comando \hspace*{espacio}. Casi idéntico al anterior, con la única diferencia de que el nombre termina con un asterisco.

Una versión especial de \hspace es \hfill. La definición de este comando es \hspace{\fill}. \fill, por su parte, es una longitud especial de LaTeX. Se trata de una "longitud flexible" que en principio mide 0, pero puede aumentar hasta cualquier tamaño.

\hfill inserta el espacio en blanco suficiente como para que el próximo carácter o texto quede en el extremo derecho de la línea. Por ejemplo:

texto a la izquierda \hfill texto a la derecha

generará una línea en la que la parte previa al comando \hfill se alineará a la izquierda, y la parte posterior a la derecha. Asimismo:

Primero\hfill Segundo\hfill Tercero

calculará el espacio necesario para que "Primero" quede en el extremo izquierdo de la línea, "Tercero" en el extremo derecho, y "Segundo" exactamente entre ambos.

Dos comandos que funcionan igual que \hfill son \dotfill y \hrulefill, con la única diferencia de que \dotfill llena el espacio insertado con puntos, mientras que \hrulefill imprime una línea. Por ejemplo: para escribir con LaTeX la cabecera de un examen, podríamos escribir algo así como:

Apellidos\dotfill Nombre\dotfill DNI\dotfill Curso\dotfill
 
Observaciones\hrulefill

En fin un último procedimiento para insertar espacio en blanco es usar el comando \phantom, aunque en realidad aquí más que de procedimiento yo hablaría de truco. Porque el comando \phantom no inserta espacio en blanco, lo que hace es escribir, el texto que recibe como argumento, con tinta invisible; lo que visualmente produce un salto exactamente de la longitud que necesitaríamos para escribir ese texto con la fuente actual.

Distancia entre líneas

Interlineado

Aunque en ocasiones LaTeX altera la distancia entre párrafos cuando es preciso, para hacer que aparentemente las páginas tengan los mismos márgenes superior e inferior, nunca modifica la distancia entre las líneas de un párrafo si no se le pide expresamente.

El comando \baselinestretch es el que controla el interlineado. Es un comando algo especial, porque para LaTeX el interlineado del párrafo es una cantidad que depende del tamaño de la fuente a usar. El comando que define fuentes de cierto tamaño (que no he explicado, porque esto es sólo una introducción) recibe como argumento necesario la distancia entre líneas. Esa distancia se considera la distancia idónea u óptima y se almacena en la variable \baseline (línea base). Al mismo tiempo, la variable \baselinestretch almacena el número por el que hay que multiplicar el espacio interlíneas.

Por defecto \baselinestretch vale "1", lo que significa que, por defecto, el interlineado será el que se definió como "óptimo" al definir la fuente. Para hacer que las líneas se aprieten o se distancien, hay que reducir o aumentar el valor de \baselinestretch, el cual se interpreta siempre como el número por el que hay que multiplicar la distancia óptima entre líneas, fijada al definir la fuente.

Así, por ejemplo el comando

\renewcommand{\baselinestretch}{1.5}

fija un interlineado de 1,5 (línea y media). Mientras que

\renewcommand{\baselinestretch}{.8}

fijaría un interlineado ligeramente inferior a "1", con el resultado de líneas más apretadas.

Obsérvese, por otra parte, que para cambiar \baselinestretch hay que usar \renewcommand, es decir: no podemos escribir directamente algo así como:

\baselinestretch=1.5

Esto produciría un error. La razón es -supongo- porque en realidad \baselinestretch no es una verdadera distancia, sino un factor para calcular la verdadera distancia.

Espacio vertical entre líneas

También es posible insertar entre dos líneas cierta cantidad de espacio, y así \bigskip inserta aproximadamente el espacio correspondiente a una línea en blanco; \medskip inserta en torno a media línea en blanco, y \smallskip una cuarta parte de línea.

Para insertar espacios mayores se dispone de la pareja de comandos \vspace{distancia} y \vspace*{distancia} que funcionan, para los espacios verticales, de modo equivalente a como lo hace \hspace{} para los horizontales: insertan verticalmente el espacio correspondiente a la distancia que se les especifique como argumento obligatorio; y si se les indica una cantidad negativa, harán que la línea se desplace hacia arriba. Así, por ejemplo,

\vspace{2cm}

hará que la próxima línea se coloque dos centímetros por debajo de la actual, mientras que

\vspace{-2cm}

colocarán la próxima línea ¡ 2 centímetros por encima ! de la actual.

\vspace{} al principio de una página no produce ningún efecto. Para asegurarnos de que efectivamente el salto se producirá, incluso al principio de una página, hay que usar \vspace*{}.

Y al igual que junto con \hspace{} se disponía de \hfill, junto con \vspace{} se dispone de \vfill que inserta el espacio en blanco suficiente para hacer que la parte superior y la inferior del texto coincidan exactamente con los márgenes superior e inferior de la página. Así:

Esta es la primera línea de la página\vfill
 
Y esta la última

provocará un salto tal que hará que la primera línea se ubique lo más alto posible en la página, y la segunda lo más bajo posible. Por supuesto esto sólo es apreciable visualmente en una página que no tenga más que dos líneas. Por ello normalmente poco después de usar \vfill se suele forzar un salto de página.

Todos estos comandos (\bigskip, \medskip, \smallskip, \vspace, \vspace*, \vfill) afectan a las líneas, no a los párrafos propiamente dichos. Por ello cuando LaTeX se encuentra con uno de ellos, espera a completar la línea actual y entonces provoca el salto. Pero ese salto no se considera un salto de párrafo. La próxima línea, en consecuencia, no quedará ligeramente indentada (tal y como LaTeX indenta la primera línea de los párrafos).

Por el contrario, si estos comandos se encuentran inmediatamente antes de un salto de párrafo, entonces afectan al inicio del próximo párrafo.

Saltos de línea

LaTeX busca automáticamente los puntos más adecuados para producir saltos de línea. Podemos alterar el algoritmo que busca esos saltos de línea con varios comandos:

\newline
\\[espacio]
\\*[espacio]
\linebreak[num]
\nolinebreak[num]

El comando \\ (que es equivalente a \newline) produce un salto de línea instantáneo en el punto en el que se encuentre. Admite un argumento opcional con el que podemos indicar la distancia a que debe colocarse la nueva línea generada. Si no indicamos este argumento, la nueva línea se colocará en el lugar que le corresponda según el valor que tenga el interlineado.

En el caso de que la nueva línea vaya a ubicarse en una página distinta de la línea anterior (es decir: si da la casualidad de que en el punto donde se inserta la nueva línea corresponde insertar un salto de página), el espacio extra indicado por el argumento opcional no se añadirá, a no ser que en lugar del comando \\[espacio] hayamos usado \\*[espacio].

Es importante tener claro que tanto \\ como \\* insertan saltos de línea, y no saltos de párrafo. Por ello en la nueva línea no se aplicará la pequeña identación que LaTeX aplica a la primera línea de un párrafo.

Los comandos \linebreak y \nolinebreak funcionan de otra manera: son como una especie de sugerencia de partir (\linebreak) o no partir (\nolinebreak) la línea en el punto donde se encuentren. Ambos admiten un argumento opcional que consiste en un número del 0 al 4 (valor por defecto) que representa el énfasis de la sugerencia. Cuanto más alto es más probable resulta que LaTeX siga esa sugerencia, hasta el punto de que \linebreak[4] se considera una sugerencia irresistible: insertará con seguridad un salto de línea, y \nolinebreak[4] viene a equivaler a una prohibición de insertar un salto de línea en el punto en el que se encuentre el comando.

Por otra parte "\linebreak[4]", aunque sea una sugerencia irresistible, no equivale a \\, porque cuando se inserta un salto de línea con \\ (o con \newline) la línea se interrumpe abruptamente, sin preocuparse de justificarla a la derecha; mientras que cuando el salto es con "\linebreak" LaTeX intenta justificar la linea que se interrumpe aumentando, si es preciso, el espacio entre las palabras de la misma.

Control de líneas viudas y huérfanas

La tradición tipográfica viene considerando que las líneas viudas y las líneas huérfanas es algo que se debe evitar en los documentos impresos. Se dice que una línea queda "viuda" cuando, siendo la última línea del párrafo, se encuentra en una página distinta al resto del párrafo. Por el contrario, una línea se llama "huérfana" cuando siendo la primera línea del párrafo, se encuentra en una página distinta del resto del párrafo.

El control de líneas viudas y huérfanas lo que procura es que al generar las páginas, si un párrafo debe quedar repartido entre dos páginas, en ninguna de ellas tenga una sola línea.

LaTeX por defecto no lleva este control. No obstante podemos indicarle que lo haga mediante las siguientes sentencias en el preámbulo de nuestro fichero:

\clubpenalty=10000
\widowpenalty=10000

La primera línea asigna una "penalización" de 10000 al hecho de dejar líneas huérfanas. La segunda hace lo mismo con las líneas "viudas"; eso significa que LaTeX procurará no hacerlo. Pero podrá hacerlo cuando considere que la alternativa genera un resultado peor.

Aquí nos asomamos, por un instante, a las entrañas de TeX. El modo de trabajar de TeX para partir líneas, palabras, páginas. consiste en barajar distintas posibilidades y elegir la menos mala. Para ello puntúa los inconvenientes de cada posible solución, y al final adopta la que menos puntos tiene. Por el procedimiento de añadir puntos a alguna de las variables que TeX toma en consideración, incidimos en su toma de decisiones.

Aumentando el valor asignado a estas variables, reduciremos la tolerancia de LaTeX a este tipo de líneas. Reduciéndolo aumentaremos la tolerancia.

Páginas

La mancha de la página

En composición tipográfica se denomina mancha de la página a la zona impresa de la misma, o, si se prefiere, al rectángulo correspondiente al texto contenido en la página. Una mancha uniforme en todas las páginas de un documento es uno de los aspectos estéticos del mismo mas evidentes.

LaTeX genera automáticamente los saltos de página, procurando siempre que el tamaño de la mancha sea similar. Aparentemente esto es fácil de conseguir: basta con dar a todas las páginas el mismo número de líneas. Sin embargo hay que tener en cuenta otras variables como, por ejemplo:

  • No todas las partes del documento tienen el mismo tamaño de letra, por lo que no todas las líneas miden lo mismo.
  • No todas las páginas tienen el mismo número de párrafos; y el espacio extra entre párrafos no se calcula, necesariamente, en líneas, por lo que un mismo número de líneas no necesariamente implica un mismo tamaño de la mancha.
  • No siempre es posible insertar un salto de página en cualquier línea; puede haber instrucciones que lo impidan como, por ejemplo, el control de líneas viudas o huérfanas.
  • En una página concreta pueden haberse insertado espacios verticales extra mediante alguno de los comandos antes examinados.
  • Una página puede tener una imagen u otros objetos flotantes.

En suma: LaTeX intenta conseguir un tamaño de mancha similar, y para ello juega con la posibilidad de estirar el espacio entre párrafos. Pero si aun así no lo consigue, se plantea el problema de dónde poner el espacio sobrante: al final de la página o al principio. Dependiendo del tipo de documento LaTeX adoptará un comportamiento u otro. Pero si queremos forzarle a adoptar una solución u otra basta con escribir, en el preámbulo del documento, las instrucciones "\raggedbottom" o "\flushbottom", según el efecto que queramos conseguir.

La mancha de la página, por otra parte, viene predeterminada por LaTeX dependiendo del tipo de documento que hayamos elegido en \documentclass{}. Se define como la combinación de dos medidas: anchura del texto y altura del texto. Los nombres de estas medidas son: \textwidth y \textheight.

Alterando estas longitudes, cambiaremos el tamaño de la mancha. Podemos, por supuesto, fijar en términos absolutos el valor de estas longitudes, pero es una mejor idea, añadir o quitar (según nuestras necesidades) cierta cantidad a los valores fijados por el propio LaTeX. Así por ejemplo:

\addtolength{\textwidth}{1cm}

Hará que la mancha tenga un centímetro más de ancho respecto al que fija por defecto LaTeX. Para reducir la mancha por defecto, basta con indicar una cantidad negativa.

Estas longitudes, por otra parte, sólo se pueden alterar en el preámbulo del documento, porque LaTeX no permite que en un mismo documento haya partes con anchuras y alturas diferentes. Esos efectos, por supuesto, los podemos controlar mediante la indentación de los párrafos. Aunque también hay paquetes que sirven para eso:

En materia de medidas de página el paquete "geometry" es el más utilizado: permite fijar todas las medidas de una página. Para conseguir que distintas partes del documento tengan diferentes márgenes puede probarse, por ejemplo, el paquete chngpage.

Control de los saltos de página

Como regla los saltos de página se insertan automáticamente. No obstante existen ciertos comandos que nos ayudan a controlar y alterar los saltos automáticamente decididos por LaTeX;

\enlargethispage{longitud}

Este comando intenta aumentar el tamaño vertical de la página en donde se encuentre (y sólo de esa) en la longitud que se le indique. Si se indica un valor positivo la página será más grande, y cabrán más líneas de texto, y si se indica un valor negativo la página será más pequeña y cabrán menos líneas de texto.

El parámetro de \enlargethispage puede indicarse como una medida absoluta. Por ejemplo: \enlargethispage{1cm} añadirá un centímetro a la página. Pero es más útil (y más corriente) indicar como parámetro una variable que almacene una longitud. Por ejemplo, las dos siguientes líneas

\enlargethispage{\baselineskip}
\enlargethispage{-\baselineskip}

usan como parámetro el valor del interlineado, de modo que la primera orden alargará la página lo bastante como para que en ella quepa una línea más, y la segunda reducirá la página hasta el punto de que en ella quepa una línea menos. Lo que no quiere decir que, necesariamente, la página vaya a tener una línea más o una línea menos: es posible que incluso alargándola o reduciéndola, el algoritmo de división de páginas de LaTeX impida insertar un salto de página, acaso porque con ello se provocaría una línea viuda o una línea huérfana. Pero lo que en todo caso producirán estas órdenes será una alteración en el tamaño de la mancha del documento: si no es posible añadir o quitar una línea, el espacio entre párrafos se agrandará o reducirá, para que la mancha de la página adquiera la nueva medida.

\pagebreak y \nopagebreak

La pareja de comandos \pagebreak[número] y \nopagebreak[número] se comportan con respecto al salto de página de modo similar a como \linebreak y \nolinebreak se comportan con respecto al salto de línea. Más que una orden se consideran una sugerencia. La primera, \pagebreak, indica a LaTeX que consideramos que ese punto es un buen punto para introducir un salto de página. Cuánto de bueno depende del número que se inserta como argumento opcional: un número entero de 0 a 4. Si el número es "4" (valor por defecto) le estamos diciendo a LaTeX que el punto es tan bueno para cambiar de página que debe hacerlo necesariamente; con valores más bajos LaTeX procurará hacernos caso, aunque no nos lo hará si el resultado es muy malo (en su opinión).

Exactamente igual funciona \nopagebreak, aunque aquí la sugerencia es de no incluir en el punto en el que se encuentra el comando un salto de página.

Esta pareja de comandos es bastante útil cuando se están escribiendo macros que queremos que funcionen de modo similar a las rúbricas de los títulos. En buena tipografía no debe nunca insertarse un salto de página entre el título de una sección y el primer párrafo de la misma. Para conseguir eso, en la macro que imprime el título de la sección deberíamos empezar por indicar que justo antes del título es una buena idea insertar un salto de página, si fuera conveniente, pero inmediatamente detrás del título no debe hacerse.

Saltos de página manuales

Con los anteriores comandos incidimos en el algoritmo de paginación de LaTeX, pero no llegamos a ordenar terminantemente que en un punto debe incluirse un salto de página; y aunque \pagebreak[4] produce ese efecto, conceptualmente \pagebreak nunca deja de ser una sugerencia.

Para indicar terminante, absoluta e incondicionalmente que queremos insertar un salto de página disponemos de tres comandos: \newpage, \clearpage y \cleardoublepage.

  • \newpage es, para las páginas, el comando equivalente a \newline para las líneas. Cuando LaTeX lo encuentra inserta un salto de página incondicional.
  • \clearpage funciona de modo similar a \newpage, pero tiene en cuenta la posible existencia de objetos flotantes (véase más adelante). Por ello lo que hace \clearpage es, primero procesar los objetos flotantes que queden pendientes, y después insertar un salto de página.
  • \cleardoublepage se usa en los documentos impresos a doble cara. En ellos hay ciertos apartados o secciones (como por ejemplo los capítulos) que siempre tienen que empezar en una página impar. Pues bien: \cleardoublepage funciona como \clearpage, con la salvedad de que se asegura de que la próxima página sea impar. Lo que significa que, si tras procesar los objetos flotantes estamos en una página par, insertará un salto de página; pero si tras procesar los objetos flotantes, quedamos en una página impar, insertará un doble salto de página.

El funcionamiento de \clearpage y \cleardoublepage dependen de dos opciones de documentclass que no he explicado: "oneside" y "twoside", en los documentos que tienen activada la opción "oneside" ambos comandos funcionan exactamente igual; en los que tienen activada la opción "twoside", funcionan con la diferencia que acabo de explicar. Por defecto (salvo que se indique otra cosa en \documentclass), los documentos de tipo "book" tienen activada la opción "twoside" y los documentos de tipo "article" tienen activada la opción "oneside"; por lo tanto sólo tiene sentido usar \cleardoublepage en documentos de tipo "book".

Elementos de las páginas

Las páginas de un documento no sólo contienen el texto que se ha tecleado, en el lugar en el que se tecleó, sino que constan de otros elementos.

  • Las páginas pueden tener encabezados y pies de página que se impriman automáticamente.
  • Asimismo en las páginas puede haber elementos cuyo lugar de impresión varíe según los casos. En particular entran en esta categoría las notas a pie de página, las notas al margen y los objetos flotantes.

Los encabezados y pies de página

Estilos de página

En LaTeX los encabezados y pie de página vienen determinados por los llamados estilos de página. LaTeX predefine tres estilos y luego los aplica de distinto modo a los diferentes tipos de documento.

  • empty La cabecera y el pie están vacíos.
  • plain La cabecera está vacía y el pie sólo contiene el número de la página, centrado. LaTeX lo aplica, por defecto, a todas las páginas de los documentos tipo "article" y a la primera página de los capítulos en los documentos de tipo "book".
  • headings El pie está vacío y en la cabecera se contiene el número de la página y un texto que varía según el tipo de documento de que se trate. Este estilo es el que LaTeX asocia, por defecto, a las páginas de los documentos tipo "book" que no sean la primera página de un capítulo.

Para aplicar un estilo concreto de página disponemos de dos comandos: \pagestyle{estilo} que aplica el estilo que se le indique como argumento a partir del momento en que tiene lugar, y \thispagestyle{estilo} que aplica el estilo indicado exclusivamente a la página en la que se encuentre el comando.

Por ejemplo: si queremos que la primera página de nuestro documento no haya ni encabezado ni pie de página, basta con escribir:

\begin{document}
\thispagestyle{empty}

Esta declaración, al encontrarse justo debajo de \begin{document} se aplica a la primera página con seguridad.

Contenido del encabezado y pie de página

Por defecto LaTeX, en los libros, usa para el encabezado de las páginas pares el título del capítulo actual (formateado con cursivas y versales -que queda muy feo, en mi opinión-) y para las páginas impares, el título de la sección actual. Si en el comando \chapter o \section correspondiente se usó el argumento opcional, se usará para el encabezado el mismo texto que se envía al índice.

Hay, no obstante, otra forma de conseguir que el texto que se use en el encabezado sea distinto del título propiamente dicho, y es usar algunos de los siguientes comandos:

  • \chaptermark{texto}
  • \sectionmark{texto}
  • \subsectionmark{texto}

El argumento texto es el que queremos que figure en el encabezado.

Estos comandos son útiles cuando el texto de un título es demasiado largo para el encabezado, pero al mismo tiempo queremos mantener ese texto tal cual en el índice, de modo que no nos interesa reducir el texto mediante el argumento opcional de \chapter, \section o \subsection.

Notas a pie y notas al margen

Notas al pie

Las notas son bloques de texto que contienen información adicional que no es imprescindible leer para seguir el sentido del texto y que es demasiado extensa como para incluirla entre paréntesis o guiones largos, por lo que se ubican en la parte inferior de la página. En el punto en el que habría que leerlas simplemente se pone una marca o etiqueta que permite relacionar, de las varias notas que puede haber al pie de la página, cuál es la que en ese punto corresponde. En muchas ocasiones se limitan a contener información bibliográfica; en otras contienen disgresiones, otras veces contienen datos que apoyan el argumento principal pero cuya inclusión en el texto le haría perder agilidad. Admiten muchos usos.

Desde el punto de vista del formateo, las notas suelen imprimirse con un tipo de letra más pequeño que el texto principal, para que así sea más sencillo distinguir visualmente en la página la parte que contiene texto y la que contiene notas. En LaTeX también se suele dibujar una línea de separación entre el bloque de texto y el bloque de notas.

La orden para introducir una nota a pie de página es \footnote{texto de la nota}. Esta orden hay que incluirla en el punto del documento en el que se inserta la nota, lo que al principio a mí me chocaba, porque acostumbrado a trabajar con procesadores de texto que directamente escriben la nota al pie de la página, me costaba trabajo escribirla junto con el cuerpo del documento. No obstante con el tiempo me acostumbré y ahora pienso que esa forma de trabajar de LaTeX es buena, pues escribimos la nota más o menos como la leerá el lector: al hilo del texto principal; lo que nos puede hacer reconsiderar la conveniencia de notas excesivamente largas, que hagan perder el hilo del texto.

El comando \footnote lleva asociado un contador del mismo nombre, el cual se reinicia cada vez que se cambia de capítulo. Por defecto las notas se asocian a números arábigos; pero basta con redefinir el comando \thefootnote para conseguir que las notas se impriman de otra manera. Por ejemplo para que nuestras notas se asocien con asteriscos y no con números, basta con escribir, en el preámbulo:

\renewcommand{\thefootnote}{\fnsymbol{footnote}}

Aunque en tal caso conviene recordar que si tenemos activada la opción "spanish" de babel nuestro documento no deberá tener más de seis notas por capítulo. Aunque otra opción sería crear un nuevo comando que reiniciara el contador de notas antes de insertarlas. Por ejemplo:

\renewcommand{\thefootnote}{\fnsymbol{footnote}}
\newcommand{\notapie}[1]{%
  \setcounter{footnote}{0}
  \footnote{#1}
}

El anterior ejemplo es interesante por varios motivos. Sobre todo porque es la primera macro que hemos escrito con argumentos. Hemos creado una macro llamada \notapie que espera un argumento obligatorio. Véase como luego, en la línea tercera nos referimos a dicho argumento al llamar a \foonote; para ello usamos el carácter reservado #.

Notas al margen

Además de notas al pie, LaTeX puede también gestionar notas al margen. Estas se diferencian de las anteriores, además de por su ubicación en la página, porque las notas al margen no se asocian con ninguna marca o etiqueta identificativa.

Para insertar una nota al margen se usa el comando:

\marginpar{Texto}

Objetos flotantes

Un objeto flotante es aquel que no tiene por qué colocarse en un punto exacto de la página sino que, como su propio nombre indica, puede, en cierto modo "flotar", desplazarse de lugar, para facilitar el mejor formateo de las páginas.

Objeto flotante puede ser, por ejemplo, un diagrama al que se refiere el texto, que en el fondo da igual en qué punto de la página se muestre, siempre y cuando lo haga en un lugar en el que esté visible el texto que lo explica; o una tabla, una imagen. Se trata en general de objetos que no pueden ser partidos entre dos páginas, y que pueden llegar a tener una longitud considerable. Precisamente por ello, se les permite "flotar" para así facilitar la composición de la página.

LaTeX dispone de varios entornos que generan objetos flotantes. Examinaremos dos de ellos: "figure" y "table". Ambos funcionan exactamente igual, por lo tanto explicaré con cierto detenimiento el primero, y luego haré las matizaciones oportunas para el segundo.

El entorno "figure"

Este entorno se usa sobre todo para hacer flotar gráficos, aunque, en realidad, con él puede hacerse flotar cualquier objeto. Su peculiaridad está en que cada vez que lo usamos podemos asociarle un título y LaTeX recordará que ha sido usado y en qué punto finalmente se ha insertado el objeto, a efectos de crear, si se le pide, un índice de figuras.

El formato general de este entorno es el siguiente:

 
\begin{figure}[Posición]
Objeto
\caption[TextoIndice]{TextoTítulo}
\end{figure}

Como se ve el objeto recibe un argumento opcional al que he denominado posición: consiste en una o varias letras que LaTeX interpreta como las preferencias del autor respecto de la ubicación final del objeto. Puede ser:

  • h (de here) significa que, hay que intentar colocar el objeto en el punto en el que se encuentra el entorno.
  • t (de top) significa que creemos más adecuado que el objeto se sitúe en la parte superior de una página.
  • b (de bottom) significa que preferimos situar al objeto en la parte inferior de la página.
  • c (de center) cuando queramos que el objeto se sitúe centrado en la página.

El orden en el que se incluyan estos valores no es significativo, pero sí lo es el hecho de no incluir alguno. Por ejemplo si indicamos como valor de posición "htc" lo esencial que LaTeX verá es que no hemos indicado "b", es decir: que no queremos que el objeto se ubique en la parte inferior de la página. Así lo hará, si puede.

En general LaTeX respeta las opciones que se indiquen como posición, salvo la opción "h" que, si es la única indicada, hay una alta probabilidad de que no se la respete. Porque para LaTeX es más importante la correcta composición de la página.

Aunque si deseamos que el objeto se inserte en un punto concreto, basta con hacer que no sea un objeto flotante. Porque no es obligatorio insertar los gráficos en un entorno figure ni las tablas en un entorno table.

El objeto es el contenido flotante. En el entorno figure suele ser un gráfico. Pero en realidad puede ser cualquier cosa. Incluso una porción de texto.

En cuanto al título del objeto, este se incluye mediante el comando \caption que admite un argumento opcional y espera otro obligatorio. El argumento obligatorio es el texto que se escribirá bajo el objeto. LaTeX precede este texto un antetexto compuesto por la palabra "Figura" seguida del número de figura de que se trate. Por ejemplo, una figura incluida en el capítulo 1° de un libro, con un texto en \caption que dijera "Diagrama de Van-Hoffen", se imprimiría como "Figura 1.1: Diagrama de Van-Hoffen" (suponiendo que sea la primera figura del capítulo en cuestión).

De lo anterior se puede deducir que los entornos figure tienen un contador asociado, cuyo formateo se puede modificar redefiniendo el comando \thefigure.

En principio el valor que incluyamos como \caption se enviará al índice de figuras; pero si queremos que en el índice de figuras se use otro texto, basta con indicarlo como argumento opcional de \caption.

El entorno "table"

Se suele usar para ubicar en él tablas que se quiere que aparezcan en el documento como "flotantes". Su formato es:

 
\begin{table}[Posición]
Objeto
\caption[TextoIndice]{TextoTítulo}
\end{table}

Como se ve el formato es idéntico al del entorno figure, y de hecho todo lo allí dicho vale para el entorno table, excepto lo relativo al índice: los objetos encerrados en un entorno table se envían, no al índice de figuras, sino al índice de tablas.

Páginas dentro de otras páginas

Para terminar este tema, quiero hacer referencia a uno de los entornos más interesantes de LaTeX se trata de minipage, que permite insertar una página dentro de otra. El formato general de este entorno es el siguiente:

\begin{minipage}[Posición][Alto][PosRel]{Ancho}
Contenido
\end{minipage}

Los distintos argumentos significan:

  • Posición Argumento opcional. Se refiere a la posición con respecto a la línea base. Puede ser "t" (=arriba), "b" (=abajo) o "c" (=centrado). Por defecto asume el valor c, lo que significa que la minipágina se centrara con respecto a la línea base en la que se encuentre el comando. Con el valor "t" la parte superior de la minipágina se alinearía con la línea base, y con la opción "b" sería la parte inferior la que resultaría alineada.
  • Alto Argumento opcional. Se refiere a la altura que tendrá la página. Si no se indica ésta tendrá la altura necesaria para albergar todo su contenido. Si se indica hay que dar también algún valor expreso al argumento opcional anterior (posición).
  • PosRel Argumento opcional. Se refiere a la posición relativa que tendrá el contenido de la minipágina dentro de esta. Puede asumir los valores "t", "b" o "c" según la posición relativa deba ser la superior, la inferior o la centrada. Sólo tiene sentido si se ha indicado un valor tal para "Alto" que tras incluir el contenido en la minipágina sobre espacio que haya que distribuir. En todo caso para indicar este argumento opcional, hay que dar algún valor expreso a los dos anteriores.
  • Ancho Es el único argumento obligatorio: se refiere a la anchura que tendrá la minipágina.

Un vez insertada la minipágina, en ella podemos incluir casi cualquier comando de LaTeX, incluidas las notas al pié. De los comandos que no se pueden incluir el más importante es el de las notas al margen (\marginpar).

Este entorno tiene distintos usos. Por ejemplo: para dibujar una caja con texto en un lugar concreto de la página, o para alterar repentinamente los márgenes del texto, etc.

Si se quiere que la minipágina quede enmarcada en un recuadro, hay que incluir el entorno dentro de un comando \fbox{}. Este comando, que es de los que no he explicado en esta introducción, dibuja un recuadro alrededor del objeto que recibe como argumento.

Lo que nos queda por aprender

Aunque da la sensación de que cada vez sabemos más, lo cierto es que en esta lección hay apartados donde realmente no he dicho casi nada. Por ejemplo:

  1. Se ha mencionado el comando \hfill, basado en la medida \fill; pero no se ha dicho nada de la medida relacionada: \fil, ni de \hfil, ni de \hfilneg.
  2. Al hablar de las líneas viudas o huérfanas, nos hemos asomado un poco a la idea de "penalizaciones" tan usada por TeX y que tan conveniente es conocer para conseguir forzar a que TeX haga las cosas de un modo distinto a como suele hacer. Este campo es gigantesco, aunque está muy poco documentado en la literatura sobre LaTeX (sí lo está, bastante bien, en la literatura de TeX).
  3. Al hablar de las páginas sólo hemos mencionado dos de las variables que controlan su tamaño: \textwidth y \textheight. Hay muchas más. Y hay un paquete que simplifica mucho su gestión: "geometry", del que tampoco hemos dicho nada.
  4. Un tema muy interesante, que ni se ha mencionado, es el de la impresión a doble columna. Otro es el del uso de la opción "landscape" para generar folios apaisados.
  5. En materia de encabezados y pies de página, se han quedado numerosas cuestiones en el tintero: ni una palabra de las órdenes \markboth y \markright, o \leftmark y \rightmark. Tampoco se ha mencionado el paquete fancyhdr, que simplifica bastante la generación de encabezados y pies de página bastante vistosos.
  6. En el tema de las notas, no se ha dicho nada de las órdenes \footnotemark y footnotetext, que son bastante versátiles para insertar notas en situaciones difíciles; ni tampoco se ha dicho nada sobre el control de la impresión en el margen derecho o izquierdo de las notas al margen.
  7. En fin: ni se han mencionado los entornos "figure*" y "table*", así como varios otros entornos, proporcionados por diferentes paquetes, que añaden otros tipos de objetos flotantes.

Pero una vez más hay que decir lo que llevo diciendo desde el principio: pensar que queda tanto por aprender, no debe desanimarnos sino al revés: nos debe hacer comprobar que acabamos de descubrir una maravillosa herramienta cuyas utilidades se extienden tanto que un documento que las expusiera todas sería demasiado extenso.

Yo me animo así.

Todas las Secciones