PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit caption-Paket: undefined references



Mithrandir
15-08-2008, 12:58
Hallo,

bei der Verwendung des caption-Pakets habe ich das Problem, dass alle z. B. per \ref{} gesetzten Verweise kein entsprechendes label finden, obwohl ich diese definiert habe. Wenn ich das ältere caption2-Paket verwende, funktioniert alles.

Kann dies mit Inkompatibilitäten zwischen dem caption-Paket und anderen Paketen liegen? Folgende weitere Pakete verwende ich:

- hyperref
- hypcap
- float
- makeidx
- vmargin
- fancyhdr
- array
- colortbl
- longtable
- color
- thumbpdf
- amsmath
- listings

Festus
15-08-2008, 13:34
Bist du sicher, dass du das Dokument oft genug kompiliert hast und es nicht nur daran liegt. Und hast du bei den \ref-Befehlen daran gedacht die Art des Labels anzugeben, z.B.
\ref{fig:...}, daran könnts auch liegen.

Andernfalls kann ich dir nur sagen, bei mir arbeitet \caption mit hyperref, float, index (als modernere Alternative zu makeidx), color und amsmath problemlos zusammen, an den Paketen wird es also nicht liegen. Hast du schon mal versucht alle nicht unbedingt nötigen Pakete rauszunehmen und ein Minimalbeispiel zu kompilieren?

Gruß, Festus

Stefan_K
15-08-2008, 14:05
Hallo,

zeig doch einmal anhand eines Beispiels, wie Du caption und label definierst. Evtl. lässt sich in dem konkreten Code die Ursache finden.

Stefan

Mithrandir
15-08-2008, 14:06
Hallo,

ich wusste zwar nicht, dass die Art des Labels obligatorisch ist, aber ich habe mir eh angewöhnt, labels derart zu verwenden. Danke für den Hinweis!

Also z. B. folgende Referenz bleibt bei mir undefiniert:



bla bla bla \ref{fig:einbild} bla bla bla ...

\begin{figure}
\centering
\includegraphics[scale=0.6]{einbild}
\label{fig:einbild}
\caption{Ein herrliches Bild.}
\end{figure}


Es bleibt mir wohl nichts anderes übrig, als nach und nach Packages wegzulassen und zu testen ...

Stefan_K
15-08-2008, 14:12
Hallo,

verwende \label direkt nach \caption, d.h. ändere die Reihenfolge.

Stefan

Mithrandir
15-08-2008, 14:30
Oh Weh, die Reihenfolge ... Tatsächlich, das löste fast alle meine Probleme! Fast alle: Was ist denn die Art des Labels bei selbstdefinierten floating-Umgebungen? Einfach der Name der Umgebung?
Und ich kann definitiv nicht auf Kapitel oder Unterkapitel verweisen, indem ich Label der Form \label{kapitelname} und \ref{kapitelname} verwende?

Schon mal vielen Dank für den Tipp mit der Reihenfolge!

bobmalaria
15-08-2008, 15:14
hi,

doch das geht. du kannst (fast) jedes beliebige label vergeben. somit kannst du sehr wohl

\chaper{einleitung}
\label{kapitel1}

\ref{kapitel1}

benutzen. die bezeichnung mit fig: tab: sec: eq: dient nur zu deiner eigenen besseren orientierung und zuordnung "was ist denn eigentlich was"

Mithrandir
15-08-2008, 15:25
Ah, ok, also doch nicht obligatorisch. Allerdings scheinen die Labels bei mit Hilfe des float-Pakets selbstdefinierten float-Umgebungen nicht zu funktionieren. Ich habe z. B. folgende Umgebung definiert:



\usepackage{float}
\floatstyle{boxed}
\newfloat{Aussage}{H}{loaus}[chapter]
...
\begin{Aussage}
\centering
Bla bla bla
\caption{Eine gewaltige Aussage}
\label{Aussage:aussage1}
\end{Aussage}


Wenn ich dann per


\ref{Aussage:aussage1}

darauf verweise, springt er an den Anfang des Dokuments.

Was muss ich hier noch beachten?

localghost
15-08-2008, 17:24
[…]

- hyperref
- hypcap
- float
- makeidx
- vmargin
- fancyhdr
- array
- colortbl
- longtable
- color
- thumbpdf
- amsmath
- listings
Wenn Du die Pakete in dieser Reihenfolge lädst, entstehen schon mal Schwierigkeiten durch hyperref (http://www.ctan.org./pkg/hyperref). Dieses Paket muss (bis auf wenige Ausnahmen, von denen hypcap (http://www.ctan.org/pkg/hypcap) eine ist,) zuletzt geladen werden.


MfG
Thorsten¹

sommerfee
16-08-2008, 20:11
Wenn Du die Pakete in dieser Reihenfolge lädst, entstehen schon mal Schwierigkeiten durch hyperref (http://www.ctan.org./pkg/hyperref). Dieses Paket muss (bis auf wenige Ausnahmen, von denen hypcap (http://www.ctan.org/pkg/hypcap) eine ist,) zuletzt geladen werden.

...und erst danach darf dann \newfloat etc. zum Einsatz kommen.

Gruß,
Axel

Mithrandir
16-08-2008, 22:50
Ja, tatsächlich, daran (hyperref-Paket am Ende einbinden) hats gelegen. Jetzt klappts. Ich danke euch! Worauf man so achten muss ...