Márgenes y caja de texto

Ponga \oddsidemargin a 0pt en LaTeX y el margen izquierdo no se vuelve cero: se vuelve exactamente una pulgada. Parece un defecto de diseño, pero es una convención heredada de DVI: el punto de referencia de una página está a una pulgada de la esquina superior izquierda del papel, y todo parámetro de margen mide un desplazamiento respecto a ese punto. Ese único dato cambia cómo se ve todo el asunto de los márgenes. Esta página explica de dónde sale esa pulgada, qué área de texto componen realmente las clases estándar y cómo cumplir con exactitud una especificación de márgenes con la respuesta actual, el paquete geometry, siempre con valores medidos.

Por qué \oddsidemargin=0pt produce un margen de una pulgada

Porque el punto de referencia no es la esquina de la hoja, sino un punto una pulgada hacia dentro. Se puede comprobar midiendo: en un article con \oddsidemargin y \topmargin a 0pt, preguntar a pdfTeX por la posición absoluta del primer carácter da 72.26999pt desde el borde izquierdo, es decir, exactamente 1.00000 pulgada. Así, el margen izquierdo real sale de la suma siguiente. \hoffset es el mando que mueve el propio punto de referencia, y \oddsidemargin desplaza aún más desde ahí. Remedido con \hoffset en 20pt, el borde izquierdo se movió a exactamente 92.27pt (o sea, 72.27 + 20).

latex
% How the page is actually built up (all measured, article, letterpaper)
%   left margin        = 1in + \hoffset + \oddsidemargin
%   top of header      = 1in + \voffset + \topmargin
%   top of body        = top of header + \headheight + \headsep
%   first baseline     = top of body + \topskip

% The classical way, by hand. Correct, but you own every consequence.
\setlength{\oddsidemargin}{0pt}   % real left margin = 1in + 0pt = 1in
\setlength{\topmargin}{0pt}       % header top at 1in; body starts 37pt lower
\setlength{\textwidth}{16cm}      % the RIGHT margin is now whatever is left
\setlength{\textheight}{24cm}     % likewise the bottom margin

% Measured with the two margins above: left edge 72.26999pt = 1.00000in,
% first baseline 119.27pt from the paper top = 1in + 0 + 12 + 25 + 10

También conviene mirar dentro de ese 1in. El pt de TeX es el punto tipográfico americano, 72,27 por pulgada, no el punto de autoedición o PostScript de 72 por pulgada. A este último TeX lo llama bp (big point), y medido, 1bp = 1.00374pt. Es decir, 12pt y 12bp difieren en torno al 0,37 %. Invisible en una sola línea, pero aplique esa misma fracción a los 345pt de \textwidth y son 1,29pt, cerca de medio milímetro. En un documento con márgenes especificados en milímetros, equivocarse de unidad puede dejarle fuera de norma. pdfTeX guarda el desplazamiento de una pulgada como \pdfhorigin y \pdfvorigin, ambos con valor predeterminado 72.26999pt.

ParámetroSignificado
\paperwidth / \paperheightDimensiones del papel según LaTeX; no el tamaño físico de la página PDF (véase más abajo)
\textwidth / \textheightAncho y alto del cuerpo (área de texto); 345.0pt por 550.0pt en un article de 10pt
\oddsidemarginDesplazamiento del margen izquierdo en páginas impares (todas con oneside), desde el origen; sume 1in
\evensidemarginLo mismo para páginas pares con twoside; por defecto 89.0pt en un book de 10pt
\topmarginDistancia desde el origen hasta la parte superior del encabezado, no del cuerpo
\headheightAltura de la caja que contiene el título de página; 12.0pt por defecto
\headsepEspacio entre el encabezado y la parte superior del cuerpo; 25.0pt por defecto en article
\footskipDistancia de línea base entre la última línea de texto y el pie; 30.0pt por defecto
\marginparwidth / \marginparsepAncho de las notas marginales y su separación del cuerpo; 65.0pt y 11.0pt en un article de 10pt
\hoffset / \voffsetMueven el propio punto de referencia; normalmente se dejan en 0pt

En cuanto se intenta fijar esto a mano, la tabla se convierte en una lista de trampas. Ampliar \textwidth no estrecha el margen derecho: el margen derecho es lo que sobra de «ancho del papel − margen izquierdo − \textwidth», así que cambia a sus espaldas. Y como \topmargin llega solo hasta la parte superior del encabezado, bajar el cuerpo a una pulgada obliga a restar \headheight y \headsep uno mismo. Medido: con margin=1in pasado a geometry, \topmargin queda en −37.0pt, exactamente −(12 + 25). Ya no hay razón para hacer esa cuenta a mano.

Por qué las clases estándar dejan tanto blanco: article y book medidos

Para mantener el número de caracteres por línea dentro de un rango legible. Un article de 10pt fija \textwidth en 345.0pt sea cual sea la hoja: en papel Letter (614,295pt de ancho) quedan unos 134pt a cada lado, y en A4 (597,5pt de ancho) el texto sigue midiendo 345.0pt. Una hoja más ancha no compra líneas más largas, porque la longitud de línea debe decidirla la legibilidad. Un cuerpo mayor ensancha algo el bloque —360.0pt en 11pt, 390.0pt en 12pt—, ya que en la misma medida caben menos letras grandes.

Clase (papel Letter)textwidthtextheightoddsidemarginevensidemargin
article345.0pt550.0pt62.0pt62.0pt
article, 11pt360.0pt541.4pt54.0pt55.0pt
article, 12pt390.0pt548.5pt39.0pt40.0pt
book345.0pt550.0pt35.0pt89.0pt

La fila book contiene toda la filosofía de una maquetación a dos caras. En una página impar, el lado izquierdo (el del cosido) mide 1in + 35.0pt = 107.27pt, y el derecho, exterior, recibe los 162.02pt restantes. Es decir, el book de LaTeX hace el margen exterior más ancho que el de encuadernación, lo contrario en apariencia de la regla habitual. El motivo es que el margen exterior se reserva como alojamiento de las notas marginales (\marginpar), y por eso \marginparwidth llega a 65.0pt. En páginas pares ambos se intercambian y toman el relevo los 89.0pt de \evensidemargin. Use esa maqueta en un documento sin notas marginales y el borde exterior se verá simplemente flojo: ahí entra geometry.

Cómo usar geometry: papel y márgenes en una línea

Una línea —\usepackage[a4paper, margin=25mm]{geometry}— resuelve el papel y los cuatro márgenes. Las opciones pueden ir en los corchetes de \usepackage o en un \geometry{...} posterior; son equivalentes, y puede llamarlo cuantas veces quiera en el preámbulo, donde un ajuste posterior de la misma clave sobrescribe al anterior. El orden no importa. El paquete es de Hideo Umeki, su línea de copyright arranca en 1996 y desde 2018 lo mantiene David Carlisle (TeX Live 2024 incluye la v5.9, de enero de 2020). Lleva un cuarto de siglo siendo la respuesta para los márgenes porque su interfaz coincide con el orden en que piensa la gente: tantos milímetros desde el borde del papel.

OpciónSignificado
a4paper / letterpaper / …Elegir la hoja por nombre; hay A0–A6, B0–B6, b5paper, a5paper, legalpaper, executivepaper y más
paperwidth= / paperheight= / papersize=Tamaño libre; papersize={210mm,297mm} da ambos a la vez
margin=Los cuatro márgenes a la vez; margin={A,B} significa izquierda/derecha = A, arriba/abajo = B
left= / right= / top= / bottom=Cada lado por separado; lmargin, rmargin, tmargin, bmargin son alias
hmargin= / vmargin=Por parejas: hmargin={izquierda,derecha} y vmargin={arriba,abajo}
inner= / outer=Márgenes de encuadernación y de corte en doble cara; alias de left y right
textwidth= / textheight= / total=Especificar el bloque de texto en lugar de los márgenes; total={ancho,alto} dimensiona todo el bloque, y width= / height= son de la misma familia
bindingoffset=Desplazamiento de encuadernación; añade esta longitud al lado interior (izquierdo con oneside)
includehead / includefootContar el encabezado (\headheight + \headsep) o el pie (\footskip) en la altura del bloque
landscapeOrientación apaisada; intercambia ancho y alto
asymmetricImpide que los márgenes se intercambien entre páginas impares y pares, dejando las notas siempre al mismo lado
showframeDibuja realmente los marcos del cuerpo, encabezado y pie; para comprobar una especificación a ojo

Cumplir con exactitud una especificación de márgenes

Lo más corto es copiar las cifras exigidas directamente en las claves de geometry. Una comprobación con números: escrita la especificación «A4, 30 mm del lado del cosido, 20 mm de corte, 5 mm de encuadernación, a dos caras» como abajo, la medida da \oddsidemargin = 27.31464pt y \evensidemargin = −15.36449pt. Sumada la pulgada, el lado de cosido de una página impar mide 99,5846pt = 35 mm (30 + 5), mientras que el borde izquierdo, exterior, de una página par mide 56,9055pt, exactamente 20 mm. Se intercambien como se intercambien los lados, el margen de cosido siempre es 35 mm y el de corte, 20 mm.

document.tex
\documentclass[twoside]{book}
\usepackage{geometry}
\geometry{
  a4paper,
  inner=30mm,        % binding side
  outer=20mm,        % fore-edge
  bindingoffset=5mm, % added to the inner side
  includehead,       % count the header into the block height
}
% Measured result: \oddsidemargin 27.31464pt, \evensidemargin -15.36449pt
% -> binding side 35mm, fore-edge 20mm, on both odd and even pages
\begin{document}
Body text goes into this block.
\end{document}

Conviene saber cómo comprobar el resultado. Añadir showframe al preámbulo dibuja de verdad los marcos del cuerpo, encabezado y pie, y el comando \layout del paquete layout imprime una página con un esquema de cada parámetro. Si quiere las cifras crudas, saque por ejemplo \the\textwidth con \typeout y lea el registro. Una advertencia: especificar a la vez márgenes y bloque de texto provoca Package geometry Warning: Over-specification in h-direction. y geometry ignora en silencio uno de los valores. Dar izquierda, derecha y textwidth y que cuadren es pura suerte: la regla es especificar dos como mucho y dejar que calcule el resto.

Pidió un tamaño de papel y el PDF salió en otro

Una opción de clase solo le dice a LaTeX qué tamaño tiene el papel; no toca el tamaño físico de la página del PDF. Son dos variables distintas. Medido: con \documentclass[a5paper]{article}, el \paperwidth de LaTeX pasa a 421,10078pt mientras el \pdfpagewidth de pdfTeX se queda en 597,50787pt, el ancho del A4. Lo mismo con [letterpaper] y [b5paper]: la hoja del PDF permanece en el valor por defecto de la distribución TeX (a4 en una TeX Live 2024 recién instalada). El resultado es un PDF a medias: la maqueta calculada para A5 y la página en A4.

Cargar geometry resuelve el desajuste por sí solo. En los cuatro casos medidos en que el papel se entregó a geometry, \pdfpagewidth y \pdfpageheight coincidieron con \paperwidth y \paperheight. Dé el tamaño de papel a geometry, no a la opción de clase: una regla de trabajo que conviene recordar.

Cambiar los márgenes a mitad del documento: \newgeometry y \restoregeometry

Llame a \newgeometry{...} en el cuerpo y un bloque de texto nuevo toma el relevo desde ahí. Reinicia todo lo dado antes salvo el tamaño de papel y luego aplica solo las opciones que le pase, así que escribirlo como si retocara un par de valores es la vía directa al accidente. Medido: en un documento A4 con margin=1in, \newgeometry{margin=1cm} llevó \textwidth de 452,9679pt a 540,60239pt (es decir, 597,50787 − 2 × 28,4526), y \restoregeometry lo devolvió a 452,9679pt. Ambos comandos insertan un \clearpage, de modo que el cambio nunca cae a mitad de página. Si reutiliza una maqueta, guárdela con \savegeometry{nombre} y recupérela con \loadgeometry{nombre}.

latex
\usepackage[a4paper, margin=1in]{geometry}
\savegeometry{normal}          % remember this layout under a name
% ... in the body:
\newgeometry{margin=1cm}       % wide pages start here (a \clearpage is inserted)
%   a big landscape table, an appendix, a fold-out figure ...
\restoregeometry               % back to the preamble layout (another \clearpage)
% \loadgeometry{normal}        % or recall a saved one by name

Para insertar una sola página apaisada, combine \newgeometry{landscape, ...} o use el entorno landscape de los paquetes especializados lscape / pdflscape (pdflscape además gira la vista en el lector de PDF, que es lo que quiere en un documento leído en pantalla). Y si lo que desea cambiar no es la forma de la página sino el aspecto de los títulos o el contenido del encabezado y el pie, eso corresponde a titlesec y fancyhdr respectivamente. La composición a varias columnas también tiene su propia página.