Damit `\label` und `\ref` bzw. `\pageref` funktionieren, benötigt LaTeX immer min. zwei LaTeX-Läufe. Es können aber auch deutlich mehr sein. Da ein `\ref` oder `\pageref` ja auch lange vor dem zugehörigen `\label` stehen kann, funktioniert das ganze nämlich so, dass LaTeX bei `\label` die zugehörige *Referenz* und Seitenzahl in eine Hilfsdatei schreibt. Diese nach ihrer Endung `aux`-Datei genannte Hilfsdatei wird dann am Anfang des nächsten LaTeX-Laufs wieder eingelesen, so dass die Informationen des letzten LaTeX-Laufs dann direkt ab `\begin{document}` zur Verfügung stehen. Da beim ersten LaTeX-Lauf nach Einfügen eines `\label` noch keine passenden Informationen verfügbar sind, werden bei diesem ersten Lauf für `\ref` und `\pageref` ersatzweise zwei Fragezeichen `??` in die Ausgabe geschrieben. So ergibt:
\documentclass[paper=a5]{scrartcl}
\usepackage{graphicx}
\usepackage{mwe}
\begin{document}
\tableofcontents
\section{Example}
See figure~\ref{fig:example} in \pageref{fig:example}.
\Blinddocument\Blinddocument
\begin{figure}
\centering
\includegraphics{example-image}
\caption{Example image}
\label{fig:example}
\end{figure}
\Blinddocument\Blinddocument\Blinddocument
\end{document}
**nach dem ersten LaTeX-Lauf** bezüglich des Querverweises:
![nach dem ersten LaTeX-Lauf][1]
Gleichzeitig findet man dann in der `log`-Datei bzw. der Terminalausgabe von `latex` zwei Mal die Warnung:
LaTeX Warning: Reference `fig:example' on page 1 undefined on input line 7.
sowie am Ende die Warnungen:
LaTeX Warning: There were undefined references.
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
**Nach dem zweiten LaTeX-Lauf** ändert sich die Ausgabe zu:
![nach dem zweiten Lauf][2]
Die erste Warnung verschwindet und von den Warnungen am Ende bleibt auch nur:
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
**Beim dritten LaTeX-Lauf** ändert sich die Ausgabe schließlich zu:
![nach dem dritten und allen weiteren LaTeX-Läufen][3]
Sämtliche Warnungen bezüglich Labels verschwinden ebenfalls. Damit ist der finale Zustand erreicht. Alle weiteren Läufe würden dasselbe Ergebnis liefern.
Wichtig bei der ganzen Sache ist jedoch auch, dass `\label` korrekt platziert werden muss. Soll die davon erzeugte *Referenz* eine Zählerausgabe sein, so muss es nach der Anweisung stehen, die für die Erhöhung des Zählers mit `\refstepcounter` verantwortlich ist. Das ist bei Gleitumgebungen nach `\caption` (siehe dazu auch »[Warum muss in einer table oder figure Umgebung label nach caption gesetzt werden?](http://texwelt.de/wissen/fragen/21/warum-muss-in-einer-table-oder-figure-umgebung-label-nach-caption-gesetzt-werden)«), bei Überschriften nach der entsprechenden Überschrift, bei nummerierten Listen nach der zugehörigen `\item`-Anweisung.
Einige Editoren bieten die Möglichkeit, Hilfsdateien automatisch zu löschen. Das sollte man allerdings erst dann tun, wenn man die Hilfsdateien wirklich nicht mehr benötigt, das PDF also fertig ist. Lässt man die Hilfsdateien hingegen nach jedem LaTeX-Lauf löschen, dann landet man immer beim Ergebnis nach dem ersten LaTeX-Lauf.
Übrigens stellt das Paket [`hyperref`](http://www.ctan.org/pkg/hyperref) mit `\autoref` eine erweiterte `\ref`-Anweisung zur Verfügung, die je nach Art des Querverweises einen Präfixtext voranstellt. Entsprechendes gibt es auch für `\autopageref`. Das ergibt dann beispielsweise mit:
\documentclass[paper=a5]{scrartcl}
\usepackage{graphicx}
\usepackage{mwe}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\section{Example}
See \autoref{fig:example} on \autopageref{fig:example}.
\Blinddocument\Blinddocument
\begin{figure}
\centering
\includegraphics{example-image}
\caption{Example image}
\label{fig:example}
\end{figure}
\Blinddocument\Blinddocument\Blinddocument
\end{document}
![mit hyperref][4]
Näheres zum Paket, dessen Anweisungen und der Möglichkeit die Art der Link-Markierung zu beeinflussen ist dessen diversen Anleitungen zu entnehmen.
Das Paket [`fancyref`](http://www.ctan.org/pkg/fancyref) wiederum ist für einfache Querverweise wie oben nicht notwendig, sondern stellt ebenfalls eine Erweiterung des Mechanismus bereit. Näheres dazu erklärt dessen Anleitung.
Anleitung. Am grundsätzlichen Vorgehen und der Notwendigkeit mehrerer LaTeX-Läufe ändert sich dabei nichts. Eine Alternative zu `fancyref` wäre beispielsweise [`cleveref`](http://www.ctan.org/pkg/cleveref).
[1]: http://texwelt.de/wissen/upfiles/test3_8.png
[2]: http://texwelt.de/wissen/upfiles/test4_6.png
[3]: http://texwelt.de/wissen/upfiles/test5_5.png
[4]: http://texwelt.de/wissen/upfiles/test6_5.png