learnlatex.org

Referências cruzadas

O mecanismo de \label e \ref

Quando você está escrevendo um documento de qualquer comprimento, você vai querer mencionar itens numerados, como figuras, tabelas, ou equações. Felizmente, o LaTeX consegue numerar automaticamente; apenas precisamos configurar tudo corretamente. Para que o LaTeX lembre de um ponto no seu documento você deve colocar um rótulo (label) nesse local, e em outros locais você pode referenciar esse rótulo.

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}
Olá mundo!

Este é o meu primeiro documento.

\section{Título da primeira seção}

Texto do material da primeira seção.


\subsection{Subseção da primeira seção}
\label{subsec:labelone}

Texto do material da primeira subseção.
\begin{equation}
  e^{i\pi}+1 = 0
\label{eq:labeltwo}
\end{equation}

Na subseção~\ref{subsec:labelone} está a equação~\ref{eq:labeltwo}.
\end{document}

Há dois comandos \label{...}, um após a subseção e outro dentro do ambiente equation. Eles são associados com os comandos \ref{...} na última frase. Quando você executa o LaTeX ele salva as informações sobre rótulos em um arquivo auxiliar. Para \label{subsec:labelone}, o LaTeX sabe que ele está em uma subseção e então salva o seu número. Em \label{eq:labeltwo}, o LaTeX sabe que está em uma equação, então ele salva as informações daquela equação. Quando você pedir por essa informação, o LaTeX vai buscá-la do arquivo auxiliar.

O subsec: e eq: não são tratados diferentemente pelo LaTeX; eles só servem para você se organizar sobre o que se trata aquele rótulo.

Você pode ver referências que aparecem no PDF como pontos de interrogação em negrito, ??. A explicação é que devido à esse armazenamento de informação no arquivo auxiliar, a primeira vez que você compila o documento, o rótulo ainda não foi salvo. Execute o LaTeX mais uma vez e tudo estará correto. (Geralmente enquanto estiver escrevendo um documento você vai executar o LaTeX várias vezes de qualquer forma, então isso não é um problema.) Se mesmo depois de compilar de novo a referência continuar como ??, verifique que você escreveu o rótulo corretamente.

Note os tils (~) antes das referências. VOcê não quer uma quebra de linha entre subseção e o número, ou entre equação e o número. Colocar um til impede que o LaTeX quebre a linha naquele ponto.

Onde colocar a \label

O comando \label sempre se refere à ultima entidade numerada: uma seção, uma equação, um float, etc. Isso significa que \label sempre deve vir depois do objeto ao qual você quer se referir. Em particular, quando você cria floats, o comando \label deve vir depois (ou melhor, dentro) do comando \caption, mas dentro do ambiente float.

Exercícios

Tente adicionar novas partes numeradas (seções, subseções, listas numeradas) para testar o documento e descobrir quantas execuções do LaTeX são necessárias para resolver todos os comandos \label e \ref.

Adicione alguns floats e veja o que acontece quando você coloca \label antes do \caption ao invés de depois; você consegue prever o resultado?

O que acontece se você colocar uma \label para uma equação depois do \end{equation}?

Veja mais sobre este tópico
Próxima lição