Hallo,

folgendes Problem:

Ich hab ein nettes Bild in eine figure-Umgebung einbettet und möchte darauf verweisen. Obwohl ich \label{} in der figure-Umgebung positioniert habe, liefert \ref{} lediglich die Nummer der aktuellen Section. Bei Algorithmen oder equations habe ich das Problem nicht.

Mit \label{fig:name} erscheinen nur Fragezeichen...

In einem Beitrag hatte ich gelesen, dass man es mit dem Package fancyref versuchen könnte,das führt aber auch wieder nur zu Fragezeichen.

Beißt sich fancyref vielleicht mit hyperref? (das muss drin bleiben)

Und es ist egal, ob ich fancy vor oder nach hyperref einbinde, es macht immer nur "??".

Hilfe... bitte.. danke :)

gefragt 27 Apr '15, 14:05

Mandzu90's gravatar image

Mandzu90
1111
Akzeptiert-Rate: 0%

bearbeitet 07 Mai '15, 11:10

cgnieder's gravatar image

cgnieder
22.1k243463

2

Willkommen in der TeXWelt. Vielleich hilft Dir Warum muss in einer table oder figure Umgebung label nach caption gesetzt werden?. Dann wäre die Frage ein Duplikat. Ansonsten müsstest Du bitte ein Minimalbeispiel erstellen. Zum Formatieren verwenden wir hier übrigens Markdown.

(27 Apr '15, 14:40) esdd

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:

Open in Online-Editor
\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

Gleichzeitig findet man dann in der log-Datei bzw. der Terminalausgabe von latex zwei Mal die Warnung:

Open in Online-Editor
LaTeX Warning: Reference `fig:example' on page 1 undefined on input line 7.

sowie am Ende die Warnungen:

Open in Online-Editor
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

Die erste Warnung verschwindet und von den Warnungen am Ende bleibt auch nur:

Open in Online-Editor
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

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?«), 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 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:

Open in Online-Editor
\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

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 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. Am grundsätzlichen Vorgehen und der Notwendigkeit mehrerer LaTeX-Läufe ändert sich dabei nichts. Eine Alternative zu fancyref wäre beispielsweise cleveref.

Permanenter link

beantwortet 04 Mai '15, 10:06

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 04 Mai '15, 10:15

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×45
×32
×28
×20
×6

gestellte Frage: 27 Apr '15, 14:05

Frage wurde gesehen: 19,162 Mal

zuletzt geändert: 07 Mai '15, 11:10