Clases estándar

Las clases estándar de LaTeX —article, report, book, letter, más la anciana slides— no son cinco programas escritos por separado. Las tres primeras son tres salidas de un mismo archivo fuente, classes.dtx, generadas con opciones distintas. En TeX Live 2024, report.cls y book.cls rondan las 750 líneas cada una, y un diff entre ambas toca solo 67. Sesenta y siete líneas: esa es toda la distancia entre un informe y un libro. Esta página las lee. Qué clase tiene capítulos, cuál compone a una o a dos caras, qué conmuta realmente \frontmatter y dónde discrepan las opciones por defecto: cada afirmación comprobada contra salida real en lugar de repetida de memoria.

article, report y book salen de un solo archivo fuente

Las tres clases se imprimen desde un mismo plano. Al abrir article.cls, la cabecera dice «classes.dtx (with options: article)»; report.cls y book.cls llevan la misma línea con otro nombre de opción. Así que, para saber en qué difieren, ejecutar diff es más rápido que leer un manual. La diferencia entre article.cls y report.cls es de 232 líneas; entre report.cls y book.cls, de 67. Esos dos números son las distancias mismas: el salto de article a report añade un nivel entero de jerarquía, mientras que el paso de report a book es un ajuste mucho menor. Las secciones siguientes tratan solo lo que aparece de verdad en esos diffs.

shell
# the header that gives the game away, and the two distances
head -8 "$(kpsewhich book.cls)" | grep classes.dtx
#   %% classes.dtx  (with options: `book')

diff "$(kpsewhich article.cls)" "$(kpsewhich report.cls)" | grep -c '^[<>]'   # 232
diff "$(kpsewhich report.cls)"  "$(kpsewhich book.cls)"   | grep -c '^[<>]'   # 67

Qué clases tienen \chapter y qué más cambia esa respuesta

Solo report y book tienen \chapter; article no. Escriba \chapter{...} en un article y el error no dice «esta clase no tiene capítulos»: dice ! Undefined control sequence., porque para LaTeX un comando ausente y una errata son el mismo suceso. Lo más consecuente, sin embargo, es que esa única diferencia cambia la numeración en cuatro sitios a la vez. report.cls y book.cls declaran \newcounter{section}[chapter], de modo que los números de sección se reinician en cada capítulo y adoptan la forma 2.1. Figuras, tablas, ecuaciones y notas al pie también se reinician por capítulo (\@addtoreset{equation}{chapter} y compañía). Y el secnumdepth por defecto es 3 en article pero 2 en report y book.

Componga el mismo cuerpo en ambas clases y la diferencia de secnumdepth se ve al instante. Dé a cada una un \section, un \subsection y un \subsubsection: article imprime «1 / 1.1 / 1.1.1» y numera los tres niveles, mientras que report imprime «0.1 / 0.1.1 / (sin número)». En report y book, \subsubsection no se numera por defecto: esa es casi siempre la causa de «mis subsubsecciones no tienen número», y \setcounter{secnumdepth}{3} en el preámbulo lo resuelve. El «0.1» también merece atención: si un report o un book empieza con \section sin un \chapter previo, el contador de capítulo se queda en cero y las secciones salen como 0.1, 0.2. Si el documento no tiene capítulos, es la clase avisando de que debió ser un article.

latex
% same body, two classes: article numbers three levels, report only two
\documentclass{article}   % -> 1 Sec / 1.1 Sub / 1.1.1 Subsub
%\documentclass{report}   % -> 0.1 Sec / 0.1.1 Sub / Subsub (unnumbered)
\begin{document}
\section{Sec}\subsection{Sub}\subsubsection{Subsub}
\end{document}

% in report/book, restore the third level with:
%   \setcounter{secnumdepth}{3}

Ya que estamos, conviene desmentir una creencia extendida: \part no reinicia el contador de capítulo. Tanto report.cls como book.cls escriben solo \newcounter{chapter}, sin argumento opcional que lo ate a part. Coloque dos capítulos en la Parte I y abra la Parte II: el capítulo siguiente lleva el número 3, no el 1, y esto en ambas clases por igual. Si quiere que la numeración reinicie por parte, ha de declararlo usted, por ejemplo con \counterwithin{chapter}{part} en el preámbulo. El aspecto de \part sí cambia según la clase: en article es un título dentro del texto corrido, mientras que en report y book provoca salto de página y ocupa una página propia, centrada y en cuerpo grande.

report frente a book: la misma fuente, 5 páginas o 9

La bifurcación entre ambas clases es una sola línea de valores por defecto. report.cls dice \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final,openany}; book.cls dice ...,twoside,onecolumn,final,openright}. Todo lo demás se sigue de ahí. openright hace que los capítulos empiecen en página derecha (impar), insertando un verso en blanco cuando hace falta. Componga la misma fuente —dos partes, tres capítulos— en cada una: report da 5 páginas y book da 9. Varias de las cuatro adicionales están completamente vacías. Es el comportamiento correcto para algo impreso y encuadernado, y una simple molestia para un PDF leído en pantalla. De ahí la combinación que se usa de verdad: elegir book y escribir oneside de forma explícita.

El diff guarda además un elemento más sorprendente. book no tiene entorno abstract. article y report definen uno; book.cls omite el bloque entero y nunca define \abstractname. Lleve a book un manuscrito que compilaba como report y se detendrá con ! LaTeX Error: Environment abstract undefined.: un juicio editorial (los libros no llevan resumen) congelado dentro del archivo de clase. El estilo de página por defecto también difiere: report usa plain (solo un número de página centrado al pie) y book usa headings (titulillos con capítulo y sección). Y book carga su propio archivo de composición, bk10.clo. Frente al size10.clo que usan article y report, la caja de texto se estrecha de 345pt a 4.5in (unos 325pt), la altura baja de 43 a 41 líneas, y los márgenes se vuelven asimétricos: 0.5in del lado del lomo, 1.5in del lado exterior. Pasar de report a book cambia no solo la imposición sino la caja misma en la que se asienta el texto.

Clase\chapterOpciones por defectoEstilo de página por defectoArchivo de composición
articleNinguno; nivel superior \sectiononeside, notitlepage, secnumdepth=3plainsize10.clo
reportoneside, openany, titlepage, secnumdepth=2plainsize10.clo
bookSí; sin número dentro de \frontmattertwoside, openright, titlepage, secnumdepth=2headingsbk10.clo (otra composición)
letterNinguno; la unidad es el entorno letteroneside, letterpaper, 10ptfirstpage / plainsize10.clo
slidesNinguno; la unidad es el entorno slideletterpaper, finalPropiosfonts.def / slides.def

Qué conmutan realmente \frontmatter, \mainmatter y \backmatter

Estas tres pertenecen solo a book, y cada una hace dos cosas a la vez. \frontmatter pasa la paginación a números romanos (i, ii, …) y a la vez pone \if@mainmatter en falso, lo que deja de numerar los capítulos. \mainmatter vuelve a los arábigos empezando de nuevo en 1 y recupera los números de capítulo. \backmatter deja la paginación intacta y solo apaga otra vez los números de capítulo. Ese segundo efecto es el que rinde: los capítulos sin numerar de las páginas preliminares siguen apareciendo en el índice, de modo que el rodeo habitual de \chapter* más un \addcontentsline escrito a mano sobra en book. Al compilar, el archivo .toc muestra \contentsline {chapter}{Preface}{i} sin número, junto a las entradas del cuerpo con \numberline {1}.

latex
\documentclass[11pt,a4paper]{book}
\begin{document}
\frontmatter                 % roman page numbers, chapters unnumbered
\chapter{Preface}            % -> toc: \contentsline {chapter}{Preface}{i}
\tableofcontents

\mainmatter                  % arabic, restarts at 1, chapters numbered again
\chapter{Beginning}          % -> toc: ... {\numberline {1}Beginning}{1}
\section{Apparatus}          % numbered 1.1

\backmatter                  % page numbers continue, chapters unnumbered
\chapter{Index}
\end{document}

Las opciones de \documentclass y qué valores por defecto cambian según la clase

Todas las clases estándar salvo slides aceptan un conjunto común de opciones entre los corchetes de \documentclass[...]{...}. La mayoría son interruptores para todo el documento, pero lo decisivo es que el mismo nombre de opción tiene valores por defecto distintos según la clase. Eso es lo que recoge la columna «Opciones por defecto» de la tabla anterior; cada valor está escrito literalmente en la línea \ExecuteOptions{...} del archivo de clase.

  • 10pt / 11pt / 12pt — tamaño base del cuerpo. Las tres clases usan 10pt por defecto.
  • Tamaño de papelletterpaper (el predeterminado), a4paper, a5paper, b5paper, legalpaper, executivepaper. Como el predeterminado es Letter estadounidense, en territorio A4 se escribe a4paper cada vez.
  • twoside / oneside — diseño a doble cara o a una cara. Solo book usa twoside por defecto.
  • openright / openany — si los capítulos abren en página derecha o en cualquiera. book usa openright, report openany. article no declara ninguna de las dos: escribirla no es un error, la opción se limita a hundirse en el log como LaTeX Warning: Unused global option(s): (la razón de esa asimetría se trata en «Class options & authoring»).
  • titlepage / notitlepage — si el título tiene página propia. report y book usan titlepage, article notitlepage.
  • twocolumn / onecolumn — componer el cuerpo a dos columnas o a una. Las tres usan onecolumn por defecto.
  • fleqn — alinea a la izquierda las fórmulas en display (centradas por defecto). leqno — pone los números de ecuación a la izquierda (a la derecha por defecto). Ambas se implementan cargando un archivo .clo.
  • landscape — orientación apaisada. draft — marca las overfull boxes con un filete negro (el predeterminado es final). openbib — compone la bibliografía en formato «abierto».

La clase letter: un sistema de comandos completamente distinto

letter no es pariente de sangre de las otras tres. Procede de su propia fuente y no de classes.dtx, y en lugar de \section, \maketitle y portada trae un vocabulario para correspondencia. Los datos del remitente —\address{...} (su propia dirección), \signature{...}, \name{...}, \location{...}, \telephone{...}— van en el preámbulo y los comparten todas las cartas del archivo. Una carta es un entorno letter cuyo argumento es la dirección del destinatario. El cuerpo abre con \opening{...} y cierra con \closing{...}, seguido opcionalmente de \cc{...} para copias, \encl{...} para adjuntos y \ps para una posdata. Los saltos de línea dentro de una dirección son \\.

latex
\documentclass{letter}
\address{1 Computing Way \\ London}   % sender, shared by every letter
\signature{Ada Lovelace}
\makelabels                          % appends a sheet of mailing labels

\begin{document}
\begin{letter}{Charles Babbage \\ 2 Engine Road}  % recipient = argument
\opening{Dear Mr.\ Babbage,}
Thank you for the notes on the Analytical Engine.
\closing{Yours sincerely,}
\cc{The Royal Society}
\encl{Two diagrams}
\end{letter}

\begin{letter}{Mary Somerville \\ 3 Science Lane}
\opening{Dear Mrs.\ Somerville,}
A second letter, same sender, same file.
\closing{Yours sincerely,}
\end{letter}
\end{document}

Una sola línea revela para qué época se diseñó esta clase. Ponga \makelabels en el preámbulo y el PDF gana una página final de etiquetas de dirección. Compile el ejemplo anterior y obtendrá dos páginas de cartas seguidas de una plancha de etiquetas con ambas direcciones de destinatario: tres páginas en total. Se imprimía en papel de etiquetas, se despegaba y se pegaba en los sobres. Eso era trabajo cotidiano. La otra cara es que letter es realmente bueno en el envío masivo de un remitente a muchos destinatarios: basta con alinear tantos entornos letter como direcciones haya. Cuando las exigencias de formato se vuelven concretas —la norma DIN 5008 en el ámbito germanohablante, por ejemplo— conviene pasar a una clase dedicada como scrlttr2 de KOMA-Script.

Qué fue la clase slides: presentaciones antes de beamer

La quinta clase estándar, slides, sigue en TeX Live (v2.4b en la edición de 2024, revisada en 2022). No es, sin embargo, un beamer antiguo. El propio manifest.txt que LaTeX distribuye describe slides.dtx como «Slides class, etc based on SLiTeX», y eso es exactamente: la descendiente de SLiTeX, el programa antaño independiente que fabricaba transparencias de retroproyector con TeX. De ahí su vocabulario distinto. Un entorno slide es una lámina, un entorno note es la nota del ponente, y un entorno overlay era literalmente una segunda transparencia colocada sobre la primera. Al compilar, la numeración lo confirma: la diapositiva es «1», el overlay superpuesto «1-a» y su nota «1-1». \onlyslides{...} y \onlynotes{...} permiten imprimir solo las diapositivas o solo las notas desde una misma fuente.

El veredicto práctico es simple: para diapositivas nuevas use beamer, no slides. La clase antigua no tiene temas, ni overlays por pasos en el sentido actual, ni navegación PDF; se diseñó con la impresión como salida, no con un proyector. slides solo merece leerse si hereda un manuscrito antiguo, o si quiere ver de dónde salió la idea de beamer de tratar un frame como «una pantalla lógica».

Cómo elegir: partir del requisito

Elegir clase no es cuestión de gusto: se deduce de lo que hay que entregar. Sin capítulos, article; un informe técnico con capítulos, report; un manuscrito encuadernado que debe funcionar a doble página, book; correspondencia, letter. Si le han dado una plantilla, su clase ya fijó la estructura, los márgenes y el tratamiento del título: no la devuelva a una clase estándar.

  • PDF leído solo en pantalla — escriba oneside de forma explícita. Incluso con book, \documentclass[oneside]{book} elimina las páginas en blanco.
  • Impreso y encuadernado — elija twoside y openright a conciencia, y revise el margen interior para la encuadernación.
  • Quiere control real sobre la página — las clases estándar ofrecen pocos asideros; pase a KOMA-Script (scrartcl / scrreprt / scrbook) o a memoir.
  • Texto principalmente japonés — las clases estándar no se diseñaron para composición japonesa. Empiece con jsclasses (jsarticle / jsbook) en pLaTeX / upLaTeX, ltjsclasses en LuaLaTeX, o la más reciente jlreq.
  • Diapositivas — beamer, no slides.

Qué comprobar tras cambiar de clase a mitad del documento

Reescribir una palabra en \documentclass no es un cambio cosmético sino estructural. Como hemos visto, mueve a la vez la disponibilidad de capítulos, la profundidad de numeración, la existencia de abstract, las dimensiones de la caja de texto y la inserción de páginas en blanco. Tras el cambio, una compilación limpia no prueba nada: revise estos cinco puntos con la vista.

ComprobaciónQué ocurreCorrección
\chapterPasar a article se detiene con ! Undefined control sequence.Degradar los capítulos a \section, o quedarse en report / book
abstractPasar a book da ! LaTeX Error: Environment abstract undefined.Quitar el resumen, o sustituirlo por \chapter*{Abstract}
secnumdepthViniendo de article, desaparecen los números de \subsubsectionAñadir \setcounter{secnumdepth}{3}
openrightCon book aparecen versos en blanco antes de los capítulos y crece el número de páginasoneside para pantalla; dejarlo para impresión
titlepage\maketitle gana o pierde una página propiaFijar titlepage o notitlepage de forma explícita