El encabezado de la parte superior y el número de la inferior responden a la misma pregunta: ¿por dónde voy en el libro? El recurso es más antiguo que la imprenta: los copistas medievales trazaban una línea adicional en el margen superior del manuscrito y escribían allí un titulillo, para que quien pasaba las hojas distinguiera las partes de un códice. LaTeX hereda esa tarea y la encomienda a un mecanismo llamado estilo de página: cuatro estilos integrados que se eligen con \pagestyle y, cuando se quedan cortos, el paquete estándar fancyhdr. Esta página recorre ese mismo camino: por qué el encabezado desaparece en la primera página de un capítulo, cómo \leftmark y \rightmark llevan los títulos de capítulo y sección al encabezado, y cómo \pagenumbering numera los preliminares en romanos y el cuerpo en arábigos.
Los cuatro estilos de página entre los que elige \pagestyle
En LaTeX estándar los encabezados y pies no se ajustan ranura por ranura: se conmuta de golpe un conjunto con nombre, el estilo de página. \pagestyle{headings} en el preámbulo rige desde ese punto hasta el final del documento, mientras que \thispagestyle{empty} en el cuerpo solo sustituye el estilo de la página en curso. De serie hay exactamente cuatro.
| Estilo | Qué aparece |
|---|---|
empty | Encabezado y pie vacíos; ningún número de página |
plain | Encabezado vacío y número centrado al pie. Predeterminado de article / report |
headings | Pie vacío; el encabezado lleva los títulos de capítulo/sección y el número. Predeterminado de book |
myheadings | La misma disposición que headings, pero sin actualización automática: el texto se da con \markboth / \markright |
Cuál está ya en vigor depende de la clase de documento. article y report arrancan en plain: nada más que un número centrado al pie. book arranca en headings, con los títulos de capítulo y sección corriendo por arriba. La diferencia no es caprichosa: un artículo de diez páginas no necesita anunciar en cada página dónde estamos, mientras que en un libro de cuatrocientas el titulillo es justo lo que permite volver del índice al texto.
Lo que headings coloca en el titulillo también lo decide la clase. En un book a doble cara, las páginas pares (izquierdas) llevan el título del capítulo y las impares (derechas) el de la sección, y el número queda siempre en el lado exterior, junto al corte. myheadings desconecta la actualización automática y deja las cadenas en manos del autor, mediante \markboth{página izquierda}{página derecha} a doble cara o \markright{página derecha}. Los estilos integrados no se doblan más allá: una disposición tan corriente como «título del documento a la izquierda, número de página a la derecha» ya se les escapa. De ahí en adelante, el trabajo es de fancyhdr.
Por qué desaparece el encabezado en la primera página de un capítulo
La respuesta está escrita en el propio \chapter. En book.cls, la segunda línea de \chapter, justo después del salto de página, es \thispagestyle{plain}. La página de apertura de capítulo pasa así a plain —sin encabezado, solo un número centrado al pie— sea cual sea la configuración. \part y \maketitle hacen exactamente lo mismo. Por eso un documento declarado con \pagestyle{empty} sigue mostrando número en la portada y al principio de cada capítulo.
El arreglo depende del objetivo. Para eliminar también el número, \thispagestyle{empty} va justo después de \chapter{…}; en el preámbulo no surte efecto, porque \chapter sobrescribe el ajuste en el instante en que se ejecuta. Si en cambio se quiere que la apertura de capítulo case con el resto del libro, hay que reconstruir el propio estilo plain. Para eso está \fancypagestyle{plain}{…}, de fancyhdr: definido una vez, cada \chapter que reclame plain recibirá el diseño propio y no el de la clase.
% Fix 1: drop the page number too, on this chapter page only.
% This must come AFTER \chapter, never in the preamble.
\chapter{Introduction}
\thispagestyle{empty}
% Fix 2: redefine plain, so every chapter opening follows your design.
\fancypagestyle{plain}{%
\fancyhf{}%
\fancyfoot[C]{\thepage}%
\renewcommand{\headrulewidth}{0pt}%
}\pagestyle{fancy}: las seis ranuras que abre fancyhdr
Al cargar fancyhdr y declarar \pagestyle{fancy} se abren seis ranuras: izquierda (L), centro (C) y derecha (R) en el encabezado, y las mismas tres en el pie, listas para rellenar. El autor es Pieter van Oostrum y la línea de copyright del paquete arranca en 1994. El nombre recortado tiene su historia. La primera versión se llamaba fancyheadings.sty, pero MS-DOS —muy vivo por entonces— solo conservaba ocho caracteres de un nombre de archivo, así que en el disco aparecía como fancyhea.sty. Hubo quien empezó a escribir \usepackage{fancyhea}, y esos documentos dejaban de compilar en Unix. Al autor le molestó lo bastante como para rebautizar el paquete con un nombre que cupiera en ocho caracteres: fancyhdr.
La práctica habitual es vaciar primero las seis ranuras con \fancyhf{} y llenar después solo las necesarias. Sin esa limpieza, los titulillos de la clase pueden sobrevivir debajo y el mismo texto aparece dos veces. Para rellenarlas se usan \fancyhead[L]{…} / [C] / [R] y \fancyfoot[L]{…} / [C] / [R]; las letras de posición se combinan, como en \fancyhead[LO,RE]{…}, para fijar varias ranuras a la vez.
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all six slots first
\fancyhead[L]{Document title} % header, left
\fancyhead[R]{\thepage} % header, right: the page number
\fancyfoot[C]{\today} % footer, centreEn documentos a doble cara (twoside) las posiciones se combinan con páginas pares (E) e impares (O). [LE,RO] significa «izquierda en páginas pares, derecha en impares»: la esquina exterior de una doble página, junto al corte, sitio tradicional del número. Un especificador sin E ni O, como [L], pone el mismo contenido en ambas. Las reglas bajo el encabezado y sobre el pie se llaman \headrulewidth y \footrulewidth, con 0.4pt y 0pt (sin regla) por omisión. Ojo: estas dos son macros, no longitudes, y se cambian con \renewcommand y no con \setlength; casi todo el mundo tropieza aquí una vez.
\renewcommand{\headrulewidth}{0.4pt} % header rule; this is the default
\renewcommand{\footrulewidth}{0pt} % no footer rule; also the defaultPoner el título del capítulo en el encabezado: \leftmark y \rightmark
Basta escribir \fancyhead[L]{\leftmark} para que el título del capítulo de esa página aterrice en el encabezado. En book y report, \leftmark guarda el capítulo actual y \rightmark la sección actual, y su contenido se reemplaza cada vez que se procesa un \chapter o un \section. article no tiene capítulos, así que todo baja un nivel: a doble cara, \leftmark lleva la sección y \rightmark la subsección; en el modo a una cara por omisión, la sección va en \rightmark.
Debajo de todo esto está la primitiva \mark de TeX. Cada vez que TeX arma una página guarda por separado dos de las marcas que aparecieron en ella: la primera (\firstmark) y la última (\botmark). El núcleo de LaTeX define entonces \leftmark como la mitad izquierda de \botmark y \rightmark como la mitad derecha de \firstmark. La asimetría última/primera se entiende en cuanto uno piensa en un diccionario: las palabras guía de la cabecera solo sirven si nombran la primera y la última entrada realmente impresas en esa página. El diseño también asoma en la práctica. Cuando una sección empieza a media página, \rightmark recoge la primera marca de esa página, de modo que el titulillo anuncia la sección que acaba de empezar más abajo y no la que llena la mitad superior. Es el comportamiento previsto, no un fallo.
El otro tropiezo clásico son las mayúsculas. Las clases estándar pasan los títulos por \MakeUppercase dentro de \chaptermark y \sectionmark antes de entregarlos a la marca, así que \leftmark ya contiene algo como «CHAPTER 1. INTRODUCTION». Para recuperar la capitalización original se envuelve en \nouppercase, de fancyhdr, que compone su argumento en un entorno donde \MakeUppercase y \uppercase no hacen nada. La anulación alcanza a todo lo que hay dentro, de modo que unas versales puestas a propósito en la misma ranura también se deshacen. Para gobernar por completo el texto del titulillo, conviene llamar uno mismo a \markboth / \markright o redefinir \chaptermark.
% Chapter title on the left, page number on the right.
% \nouppercase undoes the \MakeUppercase applied by the class.
\fancyhead[L]{\nouppercase{\leftmark}}
\fancyhead[R]{\thepage}
% Or set the running-head text by hand, with no automatic updating.
\pagestyle{myheadings}
\markboth{Left-hand page text}{Right-hand page text}Cómo corregir Package fancyhdr Warning: \headheight is too small
La advertencia dice que la caja que aloja el encabezado es más baja que lo que se ha metido dentro. Basta con ampliar \headheight hasta el valor que indica el mensaje para que desaparezca. Las clases estándar fijan \headheight en 12pt, y una regla de 0,4 pt más el interlineado que la precede ya lo desbordan: de ahí que la advertencia surja a menudo en la primera compilación tras cargar fancyhdr. El mensaje señala la altura que hace falta, así que el número que sigue a Make it at least … se puede copiar tal cual.
Hay dos vías para ampliarlo: \setlength{\headheight}{15pt} directamente, o la opción headheight= de geometry. Ambas silencian la advertencia, pero si geometry ya está en el preámbulo conviene reunir allí el valor: \headheight entra en el mismo cálculo que la altura del texto y \topmargin, y cambiar después una sola de esas magnitudes puede desplazar la mancha hacia abajo. Sin geometry, el gesto clásico es acompañar \setlength de una línea como \addtolength{\topmargin}{-3pt} para que las sumas vuelvan a cuadrar; es justo el ajuste que propone el mensaje.
% Either one of these is enough.
\setlength{\headheight}{15pt} % enlarge the header box directly
\addtolength{\topmargin}{-3pt} % ... and keep the vertical totals unchanged
% Or let geometry do the arithmetic for the whole page.
\usepackage[headheight=15pt]{geometry}Cambiar la numeración de i, ii, iii a 1, 2, 3 (\pagenumbering)
\pagenumbering{roman} numera las páginas siguientes con i, ii, iii… y \pagenumbering{arabic} devuelve 1, 2, 3…. Lo esencial: la orden no solo cambia el formato, también reinicia el contador de página a 1. La definición de LaTeX empieza literalmente por \global\c@page \@ne. Por eso la disposición habitual de un libro —preliminares en romanos desde i, cuerpo en arábigos desde 1— cabe en dos líneas de fuente.
| Argumento | Salida |
|---|---|
arabic | números arábigos: 1, 2, 3 … (predeterminado) |
roman | romanos en minúscula: i, ii, iii … (preliminares) |
Roman | romanos en mayúscula: I, II, III … |
alph | letras minúsculas: a, b, c … La página 27 se detiene con ! LaTeX Error: Counter too large. |
Alph | letras mayúsculas: A, B, C … También se agotan tras 26 páginas |
Con la clase book esas dos líneas ya están escritas: \frontmatter se define incluyendo \pagenumbering{roman} y \mainmatter incluyendo \pagenumbering{arabic}, de modo que añadirlas otra vez repite el mismo cambio —inofensivo, pero superfluo—. article y report no tienen \frontmatter, así que allí se llama a \pagenumbering a mano. Para empezar en un número cualquiera, \setcounter{page}{7}; para leer el número actual, \thepage. Vale la pena conocer una trampa: alph y Alph solo tienen letras para 26 páginas, así que llegar a la 27 detiene la compilación con ! LaTeX Error: Counter too large.
% book: \frontmatter and \mainmatter already switch the numbering.
\frontmatter % includes \pagenumbering{roman}
\tableofcontents
\mainmatter % includes \pagenumbering{arabic}
% article / report: no \frontmatter, so do it by hand.
\pagenumbering{roman} % i, ii, iii ... and the counter is reset to 1
\tableofcontents
\clearpage
\pagenumbering{arabic} % 1, 2, 3 ... counting starts over
\setcounter{page}{7} % or force any starting numberUn encabezado de libro a doble cara, de principio a fin
Reunidas en un mismo preámbulo, estas piezas dan la disposición tradicional del libro: número en el borde exterior de la doble página, título de capítulo en el interior de las pares, título de sección en el interior de las impares y un filete fino bajo el encabezado. La página de apertura de capítulo es el único sitio donde \chapter impone plain, así que se redefine \fancypagestyle{plain} para incorporarla al mismo diseño.
\documentclass[twoside]{book}
\usepackage[headheight=15pt]{geometry}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all six slots first
\fancyhead[LE,RO]{\thepage} % page number on the outer edge
\fancyhead[RE]{\nouppercase{\leftmark}} % even page, inner edge: chapter
\fancyhead[LO]{\nouppercase{\rightmark}} % odd page, inner edge: section
\renewcommand{\headrulewidth}{0.4pt} % thin rule under the header
\renewcommand{\footrulewidth}{0pt} % no rule above the footer
\fancypagestyle{plain}{% % chapter openings, same design
\fancyhf{}%
\fancyfoot[C]{\thepage}%
\renewcommand{\headrulewidth}{0pt}%
}
\begin{document}
\chapter{Introduction}
\section{Background}
Body text goes here. From the next page on, the running head shows
the chapter, the section and the page number.
\end{document}Para terminar, una regla práctica. Un documento corto a una cara al que le basta un número al pie se conforma con \pagestyle{plain} y nada más. Si únicamente se quiere ver los títulos de capítulo y sección arriba, \pagestyle{headings} ya lo resuelve. Se pasa a fancyhdr en el momento en que uno quiere decidir posiciones y tipografía por su cuenta. Incorporar cada capa solo cuando hace falta de verdad da el preámbulo que más dura. Y un principio que se olvida pronto: el titulillo existe para que el lector sepa dónde está, así que ahí arriba suele rendir más el capítulo o la sección en curso que el título del documento.