PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : subfig und Referenzen im Text



NewAtair
20-09-2008, 23:11
Hallo alle,

ich habe nur ein kleinen Problemchen mit dem Referenzieren von Bildern und subfig, denn im Text werden subfigs nicht richtig referenziert, denn die Bilder haben die Bezeichnung 1.1a und 1.1b, aber im Text werden diese als 1.0a und als 1.0b bezeichnet bzw. referenziert. Witzigerweise kann man im PDF (nicht im Minimalbeispiel) "richtig" anklicken, dh. es wird zur richtigen Stelle gesprungen.

In der beigefügten ZIP-Datei ist die DVI und die PS Datei enthalten.


\documentclass[%
fontsize=11pt,
paper=a4,
BCOR5mm,
DIVcalc,
DIV=13,
headinclude,
footinclude=false,
pagesize,
]{scrreprt}
%-------------------------------------------------------------------------

\usepackage[latin1]{inputenc}

\usepackage{pstricks}
\usepackage{pst-plot, pst-node, pst-coil, pst-eps, pst-circ,pstricks-add,multido}

\usepackage{subfig}


\usepackage{caption}
% Aussehen der Captions
\captionsetup{
margin = 10pt,
font = {small,rm},
labelfont = {small,bf},
format = hang, % oder 'hang'
indention = 0em, % Einruecken der Beschriftung
labelsep = colon, %period, space, quad, newline
justification = RaggedRight, % justified, centering
singlelinecheck = true, % false (true=bei einer Zeile immer zentrieren)
position = top %top
}
%%% Bugfix Workaround
\DeclareCaptionOption{parskip}[]{}
\DeclareCaptionOption{parindent}[]{}


% Aussehen der Captions fuer subfigures (subfig-Paket)
\captionsetup*[subfloat]{%
margin = 10pt,
font = {small,rm},
labelfont = {small,bf},
format = hang, % oder 'hang'
indention = 0em, % Einruecken der Beschriftung
labelsep = space, %period, space, quad, newline
justification = RaggedRight, % justified, centering
singlelinecheck = true, % false (true=bei einer Zeile immer zentrieren)
position = bottom, %top
labelformat = parens, % simple, empty % Wie die Bezeichnung gesetzt wird
listofformat = simple
}

\begin{document}

\chapter{Ein Problem}

\section{Blödsinn}
fkghjfkh
fdkbhlgkf
klkgdh

\section{Blablabal}

defbhdrbg fduhugd (Abbildung \ref{fig:A}) ruih urztg uutrhzu (Abbildung \ref{fig:B}) tjhijfgjh hzduegh eutuirh uertgh udefzure ezfgre
\begin{figure}[!ht]
\hfill
\subfloat[AAAA\label{fig:A}]{
\begin{pspicture}(-0.5,-0.3)(6,5)
\psline(0,0)(5,0)(5,5)(0,5)(0,0)
\end{pspicture}
}
\hfill
\subfloat[BBBB\label{fig:B}]{
\begin{pspicture}(-0.5,-0.3)(6,5)
\psline(0,0)(5,0)(5,5)(0,5)(0,0)
\end{pspicture}
}
\hfill
\mbox{}
\caption{CCCCC}
\label{C}
\end{figure}

\begin{figure}[!ht]
\centering
\begin{pspicture}(-0.5,1)(6.5,9.5)
\psline(0,0)(6,0)(6,9)(0,9)(0,0)
\end{pspicture}
\caption{DDDDD}
\label{fig:D}
\end{figure}

Aus der Abbildung \ref{fig:D} dughurh hguith hfiughtir hfdjgfd bhfdhgj ufrhug ....

\end{document}

Es macht keinen unterschied ob ich per \subref oder per \ref auf die Bilder referenzieren.

Früher hat es ohne Probleme funktioniert und jetzt referenziert es nicht mehr richtig????

Liebe Grüße und Danke,
NewAtair

bischi
21-09-2008, 08:19
Code scheint auf den ersten Blick ok zu sein. Lösch einmal alle nicht selbst erstellten Dateien und kompilier 3 mal neu. Problem gelöst?

MfG Bischi

sommerfee
21-09-2008, 08:28
Das subfig-Paket ist sehr davon abhängig, daß die Positionshinweise, die mit "position=" abgegeben worden sind, auch mit der Realität übereinstimmen. Wird z.B. wie bei dir der Hinweis "position=top" gegeben, die \caption steht aber unter dem Bild, so kommt das subfig-Paket durcheinander.

Abhilfe ist also in deinem Falle,


% Aussehen der Captions
\captionsetup{
margin = 10pt,
font = {small,rm},
labelfont = {small,bf},
format = hang, % oder 'hang'
indention = 0em, % Einruecken der Beschriftung
labelsep = colon, %period, space, quad, newline
justification = RaggedRight, % justified, centering
singlelinecheck = true, % false (true=bei einer Zeile immer zentrieren)
position = top %top
}

nach


% Aussehen der Captions
\captionsetup{
margin = 10pt,
font = {small,rm},
labelfont = {small,bf},
format = hang, % oder 'hang'
indention = 0em, % Einruecken der Beschriftung
labelsep = colon, %period, space, quad, newline
justification = RaggedRight, % justified, centering
singlelinecheck = true, % false (true=bei einer Zeile immer zentrieren)
position = bottom
}

zu ändern.

Gruß,
Axel

NewAtair
21-09-2008, 10:51
@bischi
Das war leider nicht ...

@sommerfee
Bingo! Das war es!

Aber mich wundert es nur, da ich ja für die subfloats eigene Einstellungen der Captions habe ...

Danke an alle! *virtuelles Bier reichend*
Cheers,
NewAtair

sommerfee
21-09-2008, 11:46
Aber mich wundert es nur, da ich ja für die subfloats eigene Einstellungen der Captions habe ...

\caption erhöht ja den Abbildungszähler (und nicht \begin{figure}), daher ist das subfig-paket darauf angewiesen, auch zu wissen, wo die Hauptbeschriftung steht. Denn wenn die Hauptbeschriftung unten steht, dann muß in \subfloat so getan werden, als ob der Hauptzähler um einen erhöht wird.

Wenn du jetzt die \caption unten setzt, aber das subfig-Paket denkt, sie ist oben (weil du "position=top" für die Hauptbeschriftung gesetzt hast), dann erhöht es intern nicht den Zähler (weil es denkt, dies habe \caption bereits getan) und hat dann bei der ersten Abbildung als Hauptzähler 0 statt 1. Daher die falsche Bezeichnung "1.0" statt "1.1" in den Referenzen.

Das ganze steht auch in Abschnitt 3.1.4 "The Caption Position Option" der subfig-Dokumentation.

Gruß,
Axel

NewAtair
13-10-2008, 18:49
Danke an alle!