\usetheme{Madrid}, \usetheme{Warsaw}, \usetheme{Singapore}: beamer, la clase de LaTeX para diapositivas de presentación, trae 27 temas de presentación vigentes, y todos y cada uno llevan nombre de ciudad. El autor lo explica en el manual: se le acabaron las ideas para los nombres, y las ciudades son aquellas donde él o algún coautor asistió a un congreso o taller. Esa desenvoltura caracteriza a la clase entera. Escribir beamer se parece casi en todo a escribir cualquier otro documento LaTeX, con una sola diferencia que lo cambia todo: la unidad es el frame, no la página. Esta página parte de ese único hecho y sigue desde ahí: frames, overlays, temas y por qué un entorno verbatim rompe una diapositiva en cuanto se añade.
En qué se diferencia beamer de una clase de documento normal
Desde el momento en que escribe \documentclass{beamer}, las herramientas que empujan páginas dejan de funcionar. Ponga \newpage dentro de un frame y no produce ni error ni aviso: simplemente se ignora; al probarlo, los dos párrafos situados a cada lado salen uno junto a otro en una sola diapositiva. La razón es directa: en beamer los saltos de página los deciden los límites del frame, no el autor. Por la misma lógica, \section{...} no imprime nada en el cuerpo: solo se registra en el índice y en la navegación. Y el texto escrito fuera de cualquier \begin{frame} tampoco es un error: se compone como una página desnuda, sin tema alguno. Esa es casi siempre la causa de «hay una página rara en medio de mi presentación».
La otra ruptura con el documento en papel son las dimensiones: beamer compone una pantalla, no una hoja. El valor por defecto es 4:3, escrito en beamer.cls como \beamer@paperwidth{12.80cm} y \beamer@paperheight{9.60cm}, es decir 128 mm × 96 mm. Una opción de clase cambia la proporción: \documentclass[aspectratio=169]{beamer} da 16:9 en 160 mm × 90 mm. La versión de TeX Live 2024 tiene ocho valores explícitos: 1610, 169, 149, 54, 43, 32, 141 y 2013. Lo interesante es qué hace con lo demás: si le pasa un número que no está en la lista, beamer fija la altura en 9,60 cm y calcula la proporción partiendo los dígitos. Escriba aspectratio=21 y obtiene una diapositiva 2:1 de verdad, de 19,2 cm de ancho. El tamaño del cuerpo se fija como siempre, por ejemplo \documentclass[11pt]{beamer}; el predeterminado es 11pt.
El entorno frame: una diapositiva no es una página
El corazón de beamer es el entorno frame. Todo lo que va de \begin{frame} a \end{frame} es una pantalla lógica, y dentro colocas viñetas, figuras y ecuaciones. Le das título con \frametitle{...} o pasándolo como argumento: \begin{frame}{Title}. Lo capital es que un frame no es necesariamente una página. Con los overlays de la sección siguiente, un solo frame produce varias páginas PDF que se leen como un revelado por pasos. El frame es la pantalla lógica; la página PDF, un fotograma suyo. La propia documentación de beamer separa ambas palabras: frame para lo primero, slide para lo segundo.
frame admite opciones entre corchetes. La más socorrida es [allowframebreaks], para cuando el contenido se desborda en vertical. beamer reparte entonces el frame en tantas páginas como haga falta y —detalle simpático— añade un número romano al título del frame: vuelque una lista de veintidós elementos y la primera página se titula «Long I» y la segunda «Long II». Conviene conocer también [t], [c] y [b] para alinear el contenido arriba, al centro o abajo; [plain], que retira el mobiliario del tema para que una figura llene la pantalla; [label=...], para recuperar el frame más tarde con \againframe; y [noframenumbering], para que un frame no cuente. El [fragile] de la sección siguiente va en el mismo sitio.
Los metadatos de título se declaran en el preámbulo, igual que en article. Escriba \title{...}, \author{...}, \institute{...} y \date{...}, y después coloque \titlepage dentro de un frame del cuerpo para componer la diapositiva de título (\maketitle da el mismo resultado). En una charla larga, dividir la materia con \section{...} alimenta la navegación de la parte superior de cada diapositiva. Declaradas las secciones, \tableofcontents dentro de un frame produce una diapositiva de índice, y \tableofcontents[currentsection] resalta solo la sección en curso. Para insertar ese frame automáticamente al inicio de cada sección, se conecta con \AtBeginSection[]{...} en el preámbulo.
Overlays: la diferencia entre \pause y <2->
Revelar el contenido por partes es lo que hacen los overlays, y hay dos puertas de entrada. \pause se coloca sin más a mitad de un frame y empuja todo lo que sigue a la diapositiva siguiente: cómodo, pero solo sabe construir paso a paso en el orden del fuente. La otra es la especificación de overlay, los corchetes angulares <...> pegados justo después de un comando. \item<1-> significa «desde la diapositiva 1 en adelante», \item<2> «solo en la diapositiva 2», \item<2-> «desde la diapositiva 2». Se pueden enumerar rangos y huecos juntos, como en <-2,4-5,7>. Al compilar, el comportamiento se ajusta a lo escrito: el elemento marcado \item<3> aparece en el tercer fotograma, \only<2>{...} se muestra en el segundo y en ningún otro, y \uncover<3->{...} se hace visible a partir del tercero.
| Comando | Comportamiento | Espacio mientras está oculto |
|---|---|---|
\pause | Empuja lo que sigue a la diapositiva siguiente | El contenido se añade por turnos, así que la cuestión no surge |
\uncover<2->{...} | Se hace visible en los fotogramas indicados | Siempre reservado, el diseño nunca salta |
\onslide<2->{...} | Mostrado en los fotogramas indicados, oculto en el resto | Siempre reservado |
\only<2>{...} | Emite salida solo en los fotogramas indicados | No reservado, el contenido posterior sube |
\alert<2>{...} | Cambia al color alert en los fotogramas indicados | Siempre visible, por tanto siempre reservado |
[<+->] | En un entorno de lista, avanza cada elemento automáticamente | Se comporta como \uncover |
La tercera columna es lo que hace útil esta tabla. \uncover y \onslide reservan el espacio incluso mientras está oculto, así que nada a su alrededor se mueve cuando aparecen los elementos. \only inserta y retira la salida misma: el espacio oculto se recupera y todo lo que sigue se desplaza. Para sustituir parte de una fórmula, eso es justo lo que se busca; para recorrer una lista de viñetas es una trampa, y \uncover o [<+->] resulta más seguro. La misma sintaxis de overlay se adhiere a \textbf y \textcolor tanto como a \alert, de modo que «en negrita solo en este fotograma» no exige gramática nueva.
% the blunt instrument: everything after \pause moves to the next slide
\begin{frame}{Results}
\begin{itemize}
\item First point
\pause
\item Second point
\end{itemize}
\end{frame}
% overlay specifications: say exactly which slides each piece belongs to
\begin{frame}{Results}
\begin{itemize}
\item<1-> Always there
\item<2-> From slide two
\item<3> Slide three only
\end{itemize}
\only<2>{Shown on slide 2, and takes no space otherwise}
\uncover<3->{Space is reserved from the start, ink appears on slide 3}
\end{frame}
% the same stepwise reveal, without numbering each item by hand
\begin{frame}{Results}
\begin{itemize}[<+->]
\item Observation
\item Interpretation
\item Limitation
\end{itemize}
\end{frame}Temas: ciudades, animales voladores, flores y criaturas marinas
Hay cinco clases de tema, y el nombre dice de cuál se trata. Los nombres de ciudad del comienzo —Madrid, Warsaw, Berlin, Singapore y demás— son temas de presentación, los que lo fijan todo de una vez. Los temas de color llevan la idea más lejos, y el manual descubre el truco por su cuenta. Los animales voladores (albatross, beetle, crane) son los temas de color «completos», que especifican todos los colores por sí mismos. Las flores (lily, orchid, rose) son temas de color internos, que solo cambian el color de elementos interiores como los bloques. Los animales marinos (whale, dolphin, seahorse) son temas de color externos, que gobiernan la paleta de la cabecera, el pie y la barra lateral. Así que, en cuanto se escribe \usecolortheme{whale}, el nombre ya ha avisado de que solo toca el marco exterior.
| Comando | Qué fija | Ejemplo |
|---|---|---|
\usetheme | Diseño, navegación y colores de una vez | \usetheme{Madrid} (una ciudad) |
\usecolortheme | Solo cambia la paleta | \usecolortheme{seahorse} (animal marino = externo) |
\usefonttheme | Tipografías para encabezados y cuerpo | \usefonttheme{serif}, \usefonttheme{professionalfonts} |
\useinnertheme | Estilo de los elementos internos (viñetas, forma de bloques) | \useinnertheme{rounded} |
\useoutertheme | Estilo del marco (cabecera, pie, barra lateral) | \useoutertheme{infolines} |
En la práctica, el camino rápido es elegir un \usetheme{...} y luego sobrescribir solo lo que no guste con los cuatro comandos siguientes. Elija por propósito: Madrid o Boadilla cuando una barra de navegación solo estorbaría, Frankfurt o Warsaw cuando quiera que el público sepa dónde está. Para un aspecto más contemporáneo, metropolis (\usetheme{metropolis}) es la respuesta habitual: no forma parte de beamer, pero TeX Live lo distribuye como paquete aparte. Una advertencia: recorrer temas es una manera probada de perder una tarde. El público mira el contenido, no la paleta; decida pronto y vuelva a escribir.
block y columns: enmarcar contenido y dividir la diapositiva
Para destacar contenido en una caja enmarcada se usa el entorno block: \begin{block}{Title}…\end{block} produce una caja con título cuyo color sigue al tema. El llamativo alertblock y el exampleblock se escriben igual, y los entornos theorem y definition están disponibles tal cual para teoremas y definiciones (beamer carga amsthm por usted). Para partir una diapositiva en izquierda y derecha, coloque entradas \column{width} dentro del entorno columns: el gesto estándar para poner una figura junto a su explicación.
\begin{frame}{Comparison}
\begin{columns}
\column{0.5\textwidth}
\begin{block}{Before}
The old estimate.
\end{block}
\column{0.5\textwidth}
\begin{alertblock}{After}
The corrected one.
\end{alertblock}
\end{columns}
\end{frame}Por qué un entorno verbatim rompe un frame y qué hace [fragile]
Coloque un entorno verbatim o un lstlisting del paquete listings dentro de un frame y la compilación se detiene, salvo que haya escrito \begin{frame}[fragile]. Lo incómodo es cómo se detiene. Probado en TeX Live 2024, beamer no señala un número de línea sino el archivo entero, y dice: Runaway argument?, luego ! File ended while scanning use of \@xverbatim., luego I suspect you have forgotten a }, causing me to read past where you wanted me to stop. y al final ! Emergency stop. Recibe el nombre de una macro interna que nunca escribió, más un diagnóstico rotundo: que dejó una llave abierta. No hay ninguna llave abierta. Siga ese consejo y pasará mucho rato contando llaves en un archivo cuyas llaves están perfectamente.
La causa real no son las llaves sino el orden de lectura. beamer lee primero todo el cuerpo de un frame como argumento y luego lo compone una vez por cada fotograma de overlay. Pero verbatim funciona cambiando cómo se interpretan los caracteres mientras se leen, lo cual llega tarde para un cuerpo ya engullido. Por eso el error abre con Runaway argument?: el accidente ocurre justo mientras el cuerpo se lee como argumento. [fragile] lleva a beamer por otro camino. En palabras de la propia guía del usuario, el contenido del frame se escribe en un archivo externo y luego se vuelve a leer. Al compilar se ve: aparece en el directorio de trabajo un archivo con extensión .vrb que contiene el cuerpo del frame tal cual.
Ese rodeo por un archivo genera una segunda regla. Como indica explícitamente la guía del usuario, en un frame [fragile] \end{frame} debe ir solo en su línea (espacios iniciales aparte). beamer busca esa cadena exacta al principio de una línea para saber dónde dejar de escribir; plegarla como \end{verbatim} \end{frame} falla igual, nombrando esta vez otra macro interna: ! File ended while scanning use of \next. Un punto más: los comandos de overlay como \alert<2>{...} no funcionan dentro de verbatim, porque imprimir los caracteres tal cual es precisamente su oficio. Cuando necesite resaltar parte de un listado, use el entorno semiverbatim que trae beamer: casi idéntico a verbatim salvo que \, { y } sobreviven como comandos, de modo que cabe deslizar un \alert<2>{...}.
\begin{frame}[fragile]{An algorithm} % [fragile] -> body goes via a .vrb file
\begin{verbatim}
int main(void) { return 0; }
\end{verbatim}
\end{frame} % must be alone on its own line
% to highlight part of a listing, use semiverbatim rather than verbatim
\begin{frame}[fragile]{Highlighted}
\begin{semiverbatim}
for (int i = 2; i < 100; i++)
\alert<2>{if (is_prime[i])}
\end{semiverbatim}
\end{frame}El documento beamer más pequeño que compila
Aquí está el mínimo que ofrece un tema, una diapositiva de título y una lista por pasos. El preámbulo declara el tema y los metadatos del título; el cuerpo pone \titlepage en el primer frame y una lista [<+->] en el segundo. Hay dos frames, pero los overlays expanden el PDF a cuatro páginas. Para diapositivas en japonés, añada al preámbulo el soporte adecuado al motor: cargar luatexja bajo LuaLaTeX, por ejemplo.
\documentclass[aspectratio=169,11pt]{beamer}
\usetheme{Madrid}
\usecolortheme{seahorse}
\title{My Talk}
\author{Ada Lovelace}
\institute{Analytical Engine Lab}
\date{\today}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\begin{frame}{Overview}
\begin{itemize}[<+->]
\item Background
\item Method
\item Results
\end{itemize}
\end{frame}
\end{document}Un flujo de trabajo para una charla real
beamer no es una herramienta para trocear un artículo. Divida la charla en unos pocos movimientos —problema, método, resultados, conclusión— y ponga exactamente una afirmación por frame. En vez de pegar párrafos largos del manuscrito, comprímalos en figuras, ecuaciones y viñetas breves, y añada \pause o <2-> solo donde el revelado por etapas se gane su sitio. Los overlays sirven para regular el orden de una explicación, no para decorar.
- Fije primero la relación de aspecto — si conoce el proyector, cierre
aspectratio=169o43antes de diseñar nada. Cambiarla después desplaza todas las figuras ya colocadas. - Densidad por diapositiva — de tres a cinco viñetas. Cuando se desborda, partir el frame suele leerse mejor que huir hacia
[allowframebreaks]. - Código y registros — dé siempre
[fragile]a los frames converbatim,lstlistingominted, y mantenga\end{frame}solo en su línea. - Frames donde la figura debe mandar —
[plain]retira el mobiliario del tema para que la imagen ocupe toda la pantalla. - El PDF que reparte — la presentación y el material de apoyo son documentos distintos. Plegar los overlays con el modo
handouty redactar notas del ponente se tratan en la página de materiales de apoyo.