8
1

Wenn man in einer figure-Umgebung \label vor \caption setzt, gibt \ref die falsche Nummer wieder. Wieso?

Beispieldokument:

\documentclass{article}
\begin{document}
\section{Bla bla}
Ein Abschnitt mit Abbildung~\ref{fig:abbildung}.

\begin{figure}
\label{fig:abbildung}
...
\caption{Meine Abbildung}
\end{figure}

\end{document}

gefragt 10 Jun '13, 06:40

Clemens's gravatar image

Clemens
19.4k113160
Akzeptiert: 73%

bearbeitet 13 Okt '13, 18:54


Der \caption-Befehl aktualisiert die interne Referenz, welche von \label verwendet wird, also er erhöht den Tabellen- bzw. Abbildungszähler und weist ihn zu. Daher muss er vor \label stehen.

Wenn man zuerst \label aufruft, dann bezieht LaTeX sich auf die letzte gesetzte interne Referenz, was im angegeben Beispiel die section ist, daher liefert \ref hier die section-Nummer.

Eine verbreitete Praxis ist daher auch, \label innerhalb des \caption-Arguments zu schreiben. Das vermeidet ein analoges Problem, falls jemand \caption innerhalb einer Gruppe oder Umgebung verwendet, und hinterher \label, wie in (nicht empfohlenem) {\ttfamily\caption{Text}}\label{name} - hier "sieht" \label nicht mehr, was \caption getan hat, da dessen Wirkung durch die Gruppe {...} begrenzt ist, und wieder bezieht sich \label auf eine vorangehende Referenz. Nur als Erklärung, warum man das sehen kann - ich würde es nicht schachteln. Zum Beispiel zeigt das Paket showlabels (sehr nützlich beim Entwurfs-Schreiben) das Label dann an anderer Stelle an, etwa statt im Seitenrand direkt an der Bildunterschrift.

Permanenter link

beantwortet 12 Jun '13, 03:41

stefan's gravatar image

stefan ♦♦
5.9k12234

bearbeitet 12 Jun '13, 03:47

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×46
×31
×27
×25
×21

Frage gestellt: 10 Jun '13, 06:40

Frage wurde angeschaut: 5,882 Mal

Zuletzt aktualisiert: 13 Okt '13, 18:54