El comando \caption, que añade una leyenda a una figura o tabla, parece sencillo, pero está en el centro de la numeración, las referencias cruzadas y las listas de figuras y tablas. Esta página fija primero los fundamentos de \caption: que solo funciona dentro de un flotante, que numera automáticamente, cómo darle un encabezado corto y dónde poner \label. Después pasa al paquete caption para ajustar el aspecto en detalle, y al paquete subcaption para dividir una figura en (a), (b), etc.
Fundamentos de \caption
\caption{…} adjunta texto explicativo, una leyenda, a una figura o tabla. La restricción clave es que solo funciona dentro de un flotante, es decir, dentro de un entorno figure o table. Escribirlo en texto normal es un error. Dentro de un flotante, LaTeX numera automáticamente por tipo —“Figure 1”, “Table 3”— y compone ese número junto con el texto de la leyenda en un formato fijo. Nunca escribes el número tú mismo.
Aquí tienes una figura mínima. \centering centra la imagen, \includegraphics la incorpora y \caption queda debajo.
\begin{figure}
\centering
\includegraphics[width=0.6\textwidth]{plot}
\caption{測定値と理論曲線の比較。}
\label{fig:plot}
\end{figure}Cuando una leyenda es larga y quieres solo una línea corta en la lista de figuras o de tablas, usa el argumento opcional entre corchetes: \caption[encabezado corto]{texto completo}. Lo que está en los corchetes va a la lista, mientras que lo de las llaves se compone junto a la figura. Si omites los corchetes, el texto completo se usa también en la lista.
\caption[測定値と理論曲線]{測定値(点)と理論曲線(実線)の比較。誤差棒は標準偏差を表す。}Para las referencias cruzadas, \label tiene una regla fácil de pasar por alto: pon siempre \label después de \caption. LaTeX actualiza el “número actual” al número de la figura solo cuando procesa \caption, así que un \label colocado antes toma el contador anterior (por ejemplo, el número de sección) y \ref devuelve el valor equivocado. Pon \label justo después de \caption, en la misma línea o en la siguiente, y \ref{fig:plot} dará correctamente “1”.
Una nota sobre la convención: la leyenda de una figura suele ir debajo de la figura, y la de una tabla encima de la tabla. LaTeX compone \caption donde lo escribes, así que colócalo antes de la imagen para una leyenda superior, o después para una inferior. El formato en sí —la separación entre número y texto, etc.— no cambia con la posición. Las revistas suelen dictar la colocación, así que revisa primero las normas del destino.
Dar estilo con el paquete caption
Para cambiar el aspecto de las leyendas —fuente, separador entre número y texto, alineación— usa el paquete caption de Axel Sommerfeldt. Cárgalo en el preámbulo con \usepackage{caption} y ajusta las opciones con \captionsetup{clave=valor, …}. Las claves más usadas son estas:
| Clave | Valores comunes | Efecto |
|---|---|---|
format | plain / hang | Cómo se compone el cuerpo; hang sangra las líneas siguientes al ancho de la etiqueta |
labelsep | colon / period / space / quad | Separador entre etiqueta y texto; colon da “: ”, period da “. ” |
font | small / bf / it … | Fuente y tamaño de toda la leyenda |
labelfont | bf / sc … | Fuente solo de la parte de etiqueta, como “Figure 1” |
justification | centering / raggedright / justified | Alineación: centrada, a la izquierda (derecha irregular) o justificada |
width | una longitud (p. ej. 0.8\textwidth) | Limita el ancho de salto de línea de la leyenda |
singlelinecheck | true / false | Si las leyendas cortas de una línea se centran automáticamente |
Por ejemplo, “etiqueta en negrita, separador de punto, fuente más pequeña en toda la leyenda” se fija una vez en el preámbulo así. Un \captionsetup escrito en el preámbulo afecta a todo el documento; escrito dentro de un flotante, afecta solo a esa leyenda.
\usepackage{caption}
\captionsetup{labelfont=bf, labelsep=period, font=small, justification=raggedright}Para dar estilos distintos a figuras y tablas, nombra el tipo de flotante entre corchetes: \captionsetup[figure]{…} y \captionsetup[table]{…}. Ten en cuenta que singlelinecheck está activo por defecto y centra cualquier leyenda que quepa en una línea, sin importar tu justification. Añade singlelinecheck=false para mantenerlas alineadas a la izquierda.
El paquete caption añade otro comando útil, \captionof{tipo}{texto}. Permite poner leyenda a algo que no está en un flotante: dentro de un minipage o center, donde \caption normal no funciona, \captionof{figure}{…} numera y referencia el elemento correctamente como “Figure”. Es útil cuando quieres fijar una figura y su leyenda en un punto del texto en lugar de usar el mecanismo de colocación de flotantes.
\begin{center}
\includegraphics[width=0.5\textwidth]{diagram}
\captionof{figure}{フロートに入れずに置いた図。}
\label{fig:inline}
\end{center}Dividir una figura con subcaption
A menudo quieres varias figuras pequeñas lado a lado dentro de una sola figura, cada una con su subetiqueta (a), (b), (c). El estándar actual para esto es el paquete subcaption, también de Sommerfeldt. Basta con \usepackage{subcaption}: carga automáticamente el paquete caption por debajo.
La pieza central es el entorno subfigure (subtable para tablas). Le das un argumento obligatorio de ancho —\begin{subfigure}[pos]{ancho}— mientras que el opcional [b] y similares fijan la alineación vertical. En la práctica es un minipage de ese ancho, que contiene un \includegraphics y un \caption. Un \caption dentro de una subfigura se convierte en una subetiqueta (a)/(b), mientras que el \caption colocado fuera de los entornos subfigure numera la figura completa.
Aquí tienes un ejemplo completo con dos subfiguras lado a lado. Cada subfigure mide 0.45\textwidth, con \hfill entre ellas para empujarlas hacia los dos lados.
\usepackage{graphicx}
\usepackage{subcaption}
\begin{figure}
\centering
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{before}
\caption{処理前}
\label{fig:before}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{after}
\caption{処理後}
\label{fig:after}
\end{subfigure}
\caption{画像処理の前後比較。}
\label{fig:compare}
\end{figure}En este ejemplo, la figura completa se convierte en “Figure 1”, y las dos subfiguras se componen como “(a) Before” y “(b) After”. Desde el texto, \ref{fig:before} devuelve “1a” y \ref{fig:compare} devuelve “1”. Si quieres solo la subetiqueta, como “(a)”, escribe \subref{fig:before} para obtener una “a” sin paréntesis, o \subref*{fig:before} para obtener “(a)”.
Además del entorno subfigure, existe el comando de una línea \subcaptionbox. Su forma es \subcaptionbox[entrada de lista]{encabezado}[ancho][pos-interna]{contenido}, y aquí debes poner el \label dentro del argumento del encabezado (por ejemplo \subcaptionbox{Before\label{fig:before}}{\includegraphics{…}}). Te ahorra escribir un minipage de varias líneas, así que encaja con subfiguras simples que solo contienen una imagen.
Evitar los paquetes heredados (subfig, subfigure)
Los paquetes para subfiguras pertenecen a tres generaciones históricas y son fáciles de confundir. El más antiguo, subfigure, está obsoleto y usa el comando antiguo \subfigure. Su sucesor, subfig (con \subfloat), tampoco se mantiene activamente hoy. Para documentos nuevos, la recomendación es el paquete subcaption descrito en esta página.
Ten cuidado: no puedes cargarlos juntos. Poner subcaption y subfig, o el antiguo subfigure, en tu lista de \usepackage hace que sus definiciones internas choquen y produce una avalancha de errores. Una plantilla de revista puede cargar ya un paquete antiguo, así que revisa qué carga la plantilla antes de añadir otro por tu cuenta.
- subcaption — el estándar actual; entornos
subfigure/subtablemás\subcaptionboxy\subref. Integrado con el paquete caption; recomendado aquí. - subfig — la generación anterior, con
\subfloat. El mantenimiento se ha estancado; no se recomienda para trabajos nuevos. - subfigure — el más antiguo, con
\subfigure. Obsoleto; no lo uses.