Referencias cruzadas

“Véase la Figura 3”, “por la ecuación (2)”, “consultar la página 2”: si escribes esos números y páginas a mano, mover una sola figura o sección los desajusta todos. LaTeX permite en cambio asignar un nombre y dejar que la máquina cuente. Desde el núcleo \label y \ref/\pageref, pasando por \eqref de amsmath, \autoref y \nameref de hyperref, hasta varioref y cleveref, esta página recorre las herramientas que mantienen cada referencia correcta por sí solas.

El núcleo: \label y \ref

Todo el sistema descansa en solo dos comandos. \label{key} vincula el nombre key al valor del contador que se incrementó más recientemente en ese punto. \ref{key} inserta luego ese número en el texto. LaTeX hace el conteo, así que nunca escribes un número a mano. El key es una cadena arbitraria que eliges: el apodo con el que tu fuente se refiere a una figura, ecuación o sección.

La frase “incrementado más recientemente” es la clave: lo que captura \label depende de dónde lo coloques. Para una figura o tabla, ponlo justo después de \caption; es \caption quien incrementa el contador, y si lo pones justo tras \begin{figure} podrías capturar el número de capítulo. Para una ecuación, va dentro del entorno equation; para un encabezado, justo después de \section o similar. Regla práctica: coloca \label inmediatamente después del comando que produce el número.

latex
\section{はじめに}
\label{sec:intro}

\begin{equation}
  \label{eq:euler}
  e^{i\pi} + 1 = 0
\end{equation}

\begin{figure}
  \centering
  \includegraphics{leaf}
  \caption{葉脈の構造}
  \label{fig:leaf}
\end{figure}\ref{sec:intro}節で述べたように、式~\ref{eq:euler}と図~\ref{fig:leaf}を参照する。

\ref devuelve solo el número, así que tú escribes la palabra: “Figura”, “ecuación”, “Sección”. La convención es unir palabra y número con un espacio no separable ~, en lugar de un espacio ordinario, para que un salto de línea no deje la palabra separada de su número, por ejemplo Figure~\ref{fig:leaf}. Esa redacción manual, y el riesgo de etiquetar mal el tipo, es justo lo que eliminan \autoref y \cref más abajo.

Por qué compilar dos veces

Las referencias cruzadas no se estabilizan en una sola compilación. Cada vez que LaTeX encuentra un \label, escribe ese número y esa página en el archivo .aux, un archivo auxiliar con el mismo nombre base que el documento. \ref usa la información escrita en .aux en la ejecución *anterior*. Por eso, en la primera pasada los números de destino aún no se conocen: la salida muestra un ?? en negrita y el registro contiene esta advertencia.

latex
LaTeX Warning: Label(s) may have changed. Rerun to get cross references right.

Compila una vez más y los valores de .aux se leen de vuelta, convirtiendo ?? en los números correctos. Si la numeración se desplaza y cambia un valor referenciado, la advertencia vuelve; por eso repites hasta que desaparece. En la práctica suelen bastar dos pasadas. Herramientas como latexmk ejecutan este ciclo por ti, y Overleaf compila varias veces en segundo plano, así que rara vez ves allí el ??.

Referencias de página y nombres

Cuando quieras la página en lugar del número, usa \pageref{key}. Toma el mismo nombre y devuelve el número de la página donde está ese \label. Esto permite citar número y página juntos, por ejemplo “véase la Figura 3 en la página 12” (Figure~\ref{fig:leaf} on page~\pageref{fig:leaf}).

El key puede ser cualquier cosa, pero una convención muy usada es darle un prefijo según su tipo: sec: (sección), fig: (figura), tab: (tabla), eq: (ecuación), ch: (capítulo), lst: (listado). Esto aporta dos ventajas. Nombrar por significado, como fig:leaf, significa que reordenar figuras nunca obliga a renombrar etiquetas. Además, un vistazo a \ref{fig:...} indica el tipo de destino y evita choques entre nombres de leyendas y listados.

PrefijoSe usa para
ch:Capítulos
sec:Secciones y subsecciones
fig:Figuras
tab:Tablas
eq:Ecuaciones
lst:Listados de código

Referencias a ecuaciones: \eqref (amsmath)

Los números de ecuación se escriben convencionalmente entre paréntesis (“por la ecuación (3)”). \ref simple devuelve solo 3, por lo que tendrías que añadir los paréntesis a mano; \eqref{key}, disponible al cargar amsmath, los añade por ti y devuelve (3). Mejor aún, los paréntesis se componen siempre en letra recta sin importar la fuente circundante, así que no se inclinan ni dentro de texto en cursiva. Para ecuaciones, \eqref es más cómodo que \ref.

latex
\usepackage{amsmath}
% ...
式~\eqref{eq:euler}はオイラーの等式である。
% 出力: 式 (1) はオイラーの等式である。

Extensiones de hyperref: \autoref y \nameref

Al cargar hyperref, cada referencia se convierte en un enlace clicable en el PDF y se añaden dos comandos útiles. \autoref{key} antepone automáticamente la palabra correspondiente al tipo de destino: “Figure”, “section”, etc.; una sección da “section 3.4” y una figura “Figure 3”, y todo se vuelve hipervínculo. Así se elimina el “Figure” manual de Figure~\ref{...} y el riesgo de equivocarse. La palabra antepuesta se puede cambiar redefiniendo \figureautorefname, \sectionautorefname y similares; así se localiza también.

El otro comando, \nameref{key}, inserta no un número, sino el texto del título del destino. Si referencias con \nameref la etiqueta de \section{Introduction}, obtienes las palabras “Introduction”. Úsalo cuando quieras referirte por título en lugar de por número, como “as discussed in ‘Introduction.’”.

latex
\usepackage{hyperref}
% ...
\autoref{fig:leaf}を参照。   % 出力: Figure 3 を参照。(リンク付き)
\nameref{sec:intro}で述べた。 % 出力: はじめに で述べた。

Referencias sensibles a la página: varioref

En un documento encuadernado se lee mejor “la figura en la página siguiente” cuando está cerca, o “en la página enfrentada” cuando está en la misma apertura, que imprimir mecánicamente “la figura en la página N”. \vref{key} de varioref imprime el número como \ref, pero también comprueba si el destino está en otra página y añade automáticamente texto sensible a la página: “on the next page”, “on the facing page”, “on page 5”. Si está en la misma página, no añade nada.

Cuando solo quieras la indicación de página, usa \vpageref{key}: sin número, solo “on the next page”, etc. \vpageref toma dos argumentos opcionales: el primero define el texto usado cuando cae en la misma página, el segundo la introducción cuando no lo hace. Esto ayuda cuando la referencia y su destino están cerca y quizá queden separados por un salto de página. Como su salida varía dinámicamente con la posición de página, varioref puede necesitar una compilación adicional para estabilizarse.

latex
\usepackage{varioref}
% ...
See~\vref{fig:leaf}.
% 同ページ: See figure 3.
% 別ページ: See figure 3 on the next page.  /  ... on page 12.

Referencias inteligentes: cleveref (\cref / \Cref)

cleveref eleva las referencias un nivel. \cref{key} antepone la palabra del tipo como \autoref (por defecto “fig. 1”, o “figure 1” con la opción noabbrev), pero su verdadera fuerza está en las referencias múltiples y de rango. Pasa etiquetas separadas por comas sin espacios, \cref{a,b,c}, y ordena y comprime automáticamente los números, emitiendo “figures 1, 2 and 3” o “equations~(2) and~(4)”, incluso acertando el singular/plural. Un tramo consecutivo se contrae con \crefrange{first}{last} en “figures 1 to 3”.

Al inicio de una frase quieres la palabra con mayúscula, así que usa \Cref{key} con inicial mayúscula, para comienzos como “Figure 3 shows …”; en medio de la frase usa \cref en minúscula. Para capitalizar siempre, carga con la opción capitalise. La palabra antepuesta se define y cambia con \crefname{type}{singular}{plural}; la variante capitalizada es \Crefname. Así también se localiza a japonés y otros idiomas, por ejemplo \crefname{figure}{図}{図}. Cuando quieras solo el número, como con \ref, usa \labelcref{key}.

El orden de carga es decisivo: cleveref debe ir al final, después de hyperref. Si también usas varioref, el orden es variorefhyperrefcleveref. Si te equivocas, las referencias pueden apuntar a un destino completamente distinto sin advertencia en el registro.

latex
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}   % 必ず最後に / always last
% ...
\cref{fig:a,fig:b,fig:c}   % figures 1 to 3
\cref{eq:euler,eq:max}     % equations (1) and (4)
\Cref{sec:intro} discusses % Section 1 discusses ...

Si no sabes cuál usar, conviene estandarizar todo el documento en cleveref. Maneja automáticamente la palabra del tipo, singular/plural, referencias múltiples y rangos, así que el error que puedes cometer con Figure~\ref{...} — escribir “Table” cuando querías “Figure” — simplemente no ocurre.

ComandoQué imprime
\label{key}Etiqueta el contador más reciente, sin salida
\ref{key}Solo el número, p. ej. 3
\pageref{key}El número de página de esa etiqueta
\eqref{key}Número de ecuación entre paréntesis, p. ej. (3) / amsmath
\autoref{key}Palabra del tipo + número + enlace, p. ej. Figure 3 / hyperref
\nameref{key}El texto del título de destino / hyperref
\vref{key}Número + indicación de página, página siguiente, etc. / varioref
\cref{key}Palabra del tipo + número; maneja listas/rangos / cleveref
\Cref{key}\cref capitalizado para inicio de frase / cleveref
\crefrange{a}{b}Un rango de referencias, p. ej. figures 1 to 3 / cleveref