PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \ContinuedFloat



Sal
25-01-2008, 13:05
Hallo,
ich teile eine Abbildung, die aus mehreren Teilen besteht mit dem \ContinuedFloat Befehl vom \subfig Paket auf zwei Seiten auf. Nach dem Kompilieren der Texdatei ins pdf-Format passt alles bezüglich der Nummerierung. Allerdings erhalte ich während des Kompilierens die Fehlermeldung "There were multiply-defined labels", die sich auf die beiden \label{...} Befehle in der Abbildung bezieht.

Ich denke, daß ich das gesamte Konstrukt so angelegt habe, wie es in der Dokumentation zum subfig Paket anhand eines Beispiels gezeigt ist.

Möglicherweise habe ich aber doch etwas vergessen. Könntet ihr vielleicht einen Blick auf den Code werfen?



\begin{figure}[htbp]
\subfloat[]{\label{sf01}\includegraphics[width=0.5\textwidth]{sf1.jpg}}
\subfloat[]{\label{sf02}\includegraphics[width=0.5\textwidth]{sf02.pdf}} \\
\subfloat[]{\label{sf03}\includegraphics[width=0.5\textwidth]{sf03.jpg}}
\subfloat[]{\label{sf04}\includegraphics[width=0.5\textwidth]{sf04.pdf}}
\caption{Gesamtunterschrift.
\subref{sf01} Unterschrift sf01.
\subref{sf02} Unterschrift sf02.
\subref{sf03} Unterschrift sf03.
\subref{sf02} Unterschrift sf02.
\subref{sf02} Unterschrift sf02.}
\label{ABB}
\end{figure}
\begin{figure}
\ContinuedFloat
\subfloat[]{\label{sf05}\includegraphics[width=0.5\textwidth]{sf05.pdf}}
\subfloat[]{\label{sf06}\includegraphics[width=0.5\textwidth]{sf06}} \\
\subfloat[]{\label{sf07}\includegraphics{sf07.jpg}}
\caption[]{Gesamtunterschrift.
\subref{sf05} Unterschrift sf05.
\subref{sf06} Unterschrift sf06.
\subref{sf07} Unterschrift sf07.}
\label{ABB}
\end{figure}


Danke

bischi
25-01-2008, 13:08
Schau doch bitte im l2picfaq.pdf mal nach, wie man genau subfloats erstellt (insbesonders, wo das label hinkommt ;) ).

MfG Bischi

sommerfee
25-01-2008, 13:23
Allerdings erhalte ich während des Kompilierens die Fehlermeldung "There were multiply-defined labels", die sich auf die beiden \label{...} Befehle in der Abbildung bezieht.

Es ist ja auch 2x \label{ABB} vorhanden. LaTeX scheint hier kleinlich zu wirken, da beide Label schließlich auf die selbe Abbildungsnummer verweisen.

Man darf aber nicht vergessen, daß \label noch mehr ist bzw. sein kann als nur die Abbildungsnummer, wird z.B. das hyperref-Paket eingebunden, erzeugt \ref{ABB} einen Hyperlink auf den Beginn der "figure"-Umgebung, und da es 2 Umgebungen sind, ergeben sich auch unterschiedliche Sprungziele, also müssen auch 2 verschiedene \labels angegeben werden, der zweite z.B. als \label{ABB.2} statt \label{ABB}.

Und auch ohne Hyperref sind die Abbildungsnummern nur scheinbar gleich, es wird nämlich die Angabe des Fortlaufungs-Zählers unterdrückt. Definiert man sich z.B. ein anderes Labelformat, welches diesen Zähler ausgibt, so sieht man das sehr schön. Packe mal spaßeshalber folgendes in deinen Dokumentenvorspann und schaue dir dann die zweite \caption genau an: (Achtung: Klappt erst ab caption.sty v3.1)



\DeclareCaptionLabelFormat{cont}{#1~#2\alph{Contin uedFloat}}
\captionsetup{labelformat=cont}


Liebe Grüße,
Axel

sommerfee
25-01-2008, 13:32
(insbesonders, wo das label hinkommt ;) ).

Das \label dort hinzustellen, wo es steht, ist aber gar nicht so dumm, weil man damit eine Designunschönheit des subfig-Paketes umgeht. Es ist zwar nicht dokumentiert, daß es auch so geht, aber es geht auch so :D

Man vergleiche:



\documentclass{article}
\usepackage{caption,subfig}
\usepackage[demo]{graphicx}

\DeclareCaptionLabelSeparator{visiblespace}{\textv isiblespace}
\captionsetup[subfloat]{labelsep=visiblespace}

\begin{document}

\begin{figure}[htbp]
\subfloat[]{\label{sf01}\includegraphics[width=0.5\textwidth]{sf1.jpg}}\quad
\subfloat[\label{sf02}]{\includegraphics[width=0.5\textwidth]{sf02.pdf}}
\caption{Gesamtunterschrift.}
\end{figure}

\end{document}


Diese Designschwäche, nämlich daß ein alleinestehendes \label nicht als leerer Beschriftungstext angesehen wird, ist auch in der Dokumentation des floatrow-Paketes dokumentiert, als Abhilfe gibt es dort allerdings nicht obrigen Trick zu sehen, sondern ein Kommando namens \subfloatlabel, welches das floatrow-Paket zur Verfügung stellt.

(Ab der nächsten Version 3.1g des caption-Paketes ist aber weder-noch mehr notwendig.)

Liebe Grüße,
Axel

Sal
25-01-2008, 13:40
Ich habe jetzt alle subfloats aus obigem Beispiel in die Form

\subfloat[\label{sfxx}]{\includegraphics[width=0.5\textwidt]{sfxx.*}}

gebracht. Das war's was du meintest, oder? Kompilieren führt zum gewünschten Ergebnis im pdf Output aber die Fehlermeldung bezüglich der mehrfach definierten labels besteht immer noch. Diese Meldung bezieht sich NICHT auf die labels der subfloats sondern auf das label, das im ersten Beitrag mit \label{ABB} symbolisiert wird. Das sagt mir zumindest die .log Datei.

Sal
25-01-2008, 13:59
ok, jetzt hab ich's: Für jeden der Teile, die durch \ContinuedFlow getrennt werden, anderes label verwenden.

Vielen Dank für die schnellen und kompetenten Antworten!