PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cleveref, subfig, sidecap und caption



rfischer
03-01-2012, 15:06
Hallo,

Bilder brauchen in der Regel viel Platz. Daher möchte ich die Bildunterschriften an die Seite des Bildes (nicht unten) platzieren. Genau das ist das Ziel von sidecap (falls es andere, bessere Möglichkeiten gibt - bitte einfach mitteilen).

Sidecap alleine funktioniert prima. Nur wenn sidecap (-> SCfigure-Umgebung) mit subfig (-> subfloat-Umgebung) kombiniert wird, so ist die Bildbezeichnung (caption) bei sidecap nicht so wie gewünscht.

Folgendes Beispiel:


\listfiles
%\documentclass{minimal}
\documentclass[10pt,a4paper,twoside]{book}
\usepackage[latin1]{inputenc}
\usepackage{ngerman,a4wide}
%\usepackage{pst-pdf}
%\usepackage{pstricks-add}
\usepackage[mathstrut]{mattens}
\renewcommand{\figurename}{Abb.}
\usepackage[ngerman]{varioref,cleveref}
%\usepackage[config,font=footnotesize,labelfont=bf,singlelinech eck=false]{caption,subfig}
\usepackage{subfig}%for subfloat
\captionsetup[subfigure]{labelformat=brace,format=hang}%,strut=no}%Effects also SCfigure!?!?!?
\usepackage[leftcaption]{sidecap}%for SCfigure
%\captionsetup[SCfigure]{font=footnotesize,labelfont=bf,labelsep=colon,sin glelinecheck=false}
\sidecaptionvpos{figure}{c}
\usepackage{caption}%AFTER CLEVEREF PACKAGE!!!!!!!!
\captionsetup{font=footnotesize,labelfont=bf,singl elinecheck=false}
%
\showcaptionsetup{figure}
\showcaptionsetup{SCfigure}
\showcaptionsetup{subfloat}
\showcaptionsetup{subfigure}
%
\pagestyle{empty}

%Enable Labeling for subfig and sidecap combination
%\AtBeginDocument{\let\Orilabel\label}%

\begin{document}%
%
\begin{figure}%
TEST FIGURE 1%
\caption{Test Caption Test Caption Test Caption Test Caption
Test Test Test Caption Test Caption v Test Caption Test Caption}%
\label{fig:01:xyz}%
\end{figure}%
Referenz der~\cref{fig:01:xyz}

\begin{SCfigure}[\sidecaptionrelwidth][htbp]
TEST FIGURE 2%
\caption{Test Caption Test Caption Test Caption Test Caption
Test Test Test Caption Test Caption v Test Caption Test Caption}%
\label{fig:02}%
\end{SCfigure}
Referenz der~\cref{fig:02}

%Test
\begin{SCfigure}[\sidecaptionrelwidth][htbp]
%\begin{figure}[htbp]
\subfloat[{\protect\phantom{$\aS{a}$}}\hspace{-2.5mm}Kartesischen Koordinatensystems]{\label{fig:01:054a}%\Orilabel{fig:01:054a}\label{ fig:01:054a}
TEST FIGURE 3a
% \begin{pspicture}(-1,-1)(4,3)
%% \psgrid[gridcolor=gray,subgridcolor=lightgray]
% \psaxes[arrowinset=0,arrowscale=1.5,showorigin=true
% ]{->}(0,0)(-0.2,-0.2)(3.5,2.5)[$x$,0][$y$,90]%
% \psline[linestyle=dashed,dash=1mm 0.5mm](0,2)(3,2)(3,0)
% \psdot[dotscale=1](3,2)
% \uput[u](3,2){$P=(3,2)$}
% \uput{.7}[d](1.5,0){Abszisse}
% \uput{.7}[l]{90}(0,1){Ordinate}
% \end{pspicture}
}\quad
\subfloat[Vektor $\aS{a}$]{\label{fig:01:054b}%\Orilabel{fig:01:054b}\label{ fig:01:054b}
TEST FIGURE 3b
% \begin{pspicture}(-1,-1)(4,3)
% \psgrid[gridcolor=gray,subgridcolor=lightgray]
% \psaxes[arrowinset=0,arrowscale=1.5,labels=none,ticks=none
% ]{->}(0,0)(-0.2,-0.2)(3.5,2.5)[$x$,0][$y$,90]%
% %Nodes
% \pnode(0.6,0.6){A}\pnode(3,2){B}
% \pnode(A|B){A1}\pnode(B|A){B1}
% \nput{225}{A}{$P_1$}\nput{45}{B}{$P_2$}
% %Vector
% \ncline[arrowinset=0,arrowscale=1.5
% ]{->}{A}{B}
% \naput[nrot=:U,npos=0.4]{$\aS{a}$}
% \nbput[nrot=:U,npos=0.6]{$\overrightarrow{P_1P_2}$}
% %Lines
% \ncline[linestyle=dashed,dash=1mm 0.5mm]{A}{A1}
% \ncline[linestyle=dashed,dash=1mm 0.5mm]{A1}{B}
% \ncline[linestyle=dashed,dash=1mm 0.5mm]{B1}{B}
% \nbput[nrot=:U]{$\Delta y$}
% \ncline[linestyle=dashed,dash=1mm 0.5mm]{A}{B1}
% \nbput[nrot=:U]{$\Delta x$}
% %Axes
% \uput[d](A|0,0){$P_{1,x}$}
% \uput[d](B|0,0){$P_{2,x}$}
% \uput[l](0,0|A){$P_{1,y}$}
% \uput[l](0,0|B){$P_{2,y}$}
% %Dotted
% \pcline[linestyle=dotted,dotsep=0.5mm](A)(A|0,0)
% \pcline[linestyle=dotted,dotsep=0.5mm](A)(0,0|A)
% \pcline[linestyle=dotted,dotsep=0.5mm](B|0,0)(B1)
% \pcline[linestyle=dotted,dotsep=0.5mm](0,0|B)(A1)
% \end{pspicture}
}
\caption{Definition eines kartesisches Koordinatensystem und eines Vektors im zweidimensionalen Raum}\label{fig:01:054}
%\end{figure}
\end{SCfigure}

Referenz der~\cref{fig:01:054a}

Referenz der~\cref{fig:01:054b}

Referenz der~\cref{fig:01:054}

\end{document}


Der Anhang M01.pdf zeigt das Resultat:
1) Bild 1: nur figure Umgebung -> Abb. 1: passt perfekt
2) Bild 2: nur SCfigure Umgebung -> Abb. 2: passt perfekt
3) Bild 3: SCfigure mit subfloat Umgebung -> Teilabbildungen a) und b) passen perfekt (auch die Referenz). Nur das caption von SCfigure (auf der linken Seite) lautet Abb. 3) und nicht Abb. 3: Desweiteren ist der Text eingerückt (hang). Irgendwie scheint das subfloat caption-format in diesem Fall auf das SCfigure caption-format durchzuschlagen.

Habe schon viel unter google gesucht und in der Doku recherchiert. Bislang ohne Erfolg.

Die Befehle
\showcaptionsetup{figure}
\showcaptionsetup{SCfigure}
\showcaptionsetup{subfloat}
\showcaptionsetup{subfigure}

liefern:
Caption Info: Option list on `figure'
Caption Data: -none- on input line 20.


Caption Info: Option list on `SCfigure'
Caption Data: -none- on input line 21.


Caption Info: Option list on `subfloat'
Caption Data: {font=footnotesize, labelformat=parens,labelsep=space, listofformat=subparens,subrefformat=subsimple,,two s
ide,} on input line 22.


Caption Info: Option list on `subfigure'
Caption Data: {labelformat=brace,format=hang} on input line 23.

--> also keine Veränderung des SCfigure capton formats...!?!?!

Meine Versionen:
*File List*
book.cls 2007/10/19 v1.4h Standard LaTeX document class
bk10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
inputenc.sty 2008/03/30 v1.1d Input encoding file
latin1.def 2008/03/30 v1.1d Input encoding file
ngerman.sty 1998/07/08 v2.5e Support for writing german texts (br)
a4wide.sty 1994/08/30
a4.sty 2004/04/15 v1.2g A4 based page layout
mattens.sty 2010/03/26 v1.3a Matrix/Tensors (DNJ Els)
amsmath.sty 2000/07/18 v2.13 AMS math features
amstext.sty 2000/06/29 v2.01
amsgen.sty 1999/11/30 v2.0
amsbsy.sty 1999/11/29 v1.2d
amsopn.sty 1999/12/14 v2.01 operator names
varioref.sty 2011/10/02 v1.4z package for extended references (FMi)
cleveref.sty 2011/10/24{} v0.18{} Intelligent cross-referencing
subfig.sty 2005/06/28 ver: 1.3 subfig package
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
caption.sty 2011/11/10 v3.2e Customizing captions (AR)
caption3.sty 2011/11/01 v1.4a caption3 kernel (AR)
sidecap.sty 2003/06/06 v1.6f SideCap Package (RN/HjG)
ifthen.sty 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
ragged2e.sty 2009/05/21 v2.1 ragged2e Package (MS)
everysel.sty 2011/10/28 v1.2 EverySelectfont Package (MS)
***********

Vielleicht hatte ja irgendjemand schonmal ein ähnliches Problem bzw. es gibt bessere Alternativen, um Bildunterschriften auf die Seite zu bekommen.

Viele Grüße,
Robert.

sommerfee
03-01-2012, 16:14
Sidecap alleine funktioniert prima. Nur wenn sidecap (-> SCfigure-Umgebung) mit subfig (-> subfloat-Umgebung) kombiniert wird, so ist die Bildbezeichnung (caption) bei sidecap nicht so wie gewünscht.

Das subfig-Paket ist nicht an das sidecap-Paket angepasst. Da es nun schon seit über sechs Jahren nicht mehr maintained wird, ist auch nicht mehr damit zu rechnen, daß sich da was tun wird.

Aus diesem Grund (und aus vielen anderen Gründen) hatte ich seinerzeit das subcaption-Paket entwickelt, welches an alle Pakete angepasst ist, die das caption-Paket unterstützt. Also auch das sidecap-Paket:



\listfiles
\documentclass[10pt,a4paper,twoside]{book}
\usepackage[latin1]{inputenc}
\usepackage{ngerman,a4wide}
\usepackage[mathstrut]{mattens}
\usepackage[ngerman]{varioref,cleveref}
\usepackage[font=footnotesize,labelfont=bf,singlelinecheck=fal se,figurename=Abb.]{caption}
\usepackage[labelfont={},labelformat=brace,format=hang]{subcaption}%for subfloat
\usepackage[leftcaption]{sidecap}%for SCfigure
%\captionsetup[SCfigure]{font=footnotesize,labelfont=bf,labelsep=colon,sin glelinecheck=false}
\sidecaptionvpos{figure}{c}
%
\showcaptionsetup{figure}
\showcaptionsetup{SCfigure}
\showcaptionsetup{subfloat}
\showcaptionsetup{subfigure}
%
\pagestyle{empty}

\begin{document}%
%
\begin{figure}%
TEST FIGURE 1%
\caption{Test Caption Test Caption Test Caption Test Caption
Test Test Test Caption Test Caption v Test Caption Test Caption}%
\label{fig:01:xyz}%
\end{figure}%
Referenz der~\cref{fig:01:xyz}

\begin{SCfigure}[\sidecaptionrelwidth][htbp]
TEST FIGURE 2%
\caption{Test Caption Test Caption Test Caption Test Caption
Test Test Test Caption Test Caption v Test Caption Test Caption}%
\label{fig:02}%
\end{SCfigure}
Referenz der~\cref{fig:02}

%Test
\begin{SCfigure}[\sidecaptionrelwidth][htbp]
\subcaptionbox{Kartesischen Koordinatensystems\label{fig:01:054a}}
{TEST FIGURE 3a}
\quad
\subcaptionbox{Vektor $\aS{a}$\label{fig:01:054b}}
{TEST FIGURE 3b}
\caption{Definition eines kartesisches Koordinatensystem und eines Vektors im zweidimensionalen Raum}\label{fig:01:054}
\end{SCfigure}

Referenz der~\cref{fig:01:054a}

Referenz der~\cref{fig:01:054b}

Referenz der~\cref{fig:01:054}

\end{document}


Noch ein paar Anmerkungen zu deinem Beispiel:

\usepackage{caption}%AFTER CLEVEREF PACKAGE!!!!!!!!
Man kann das caption-Paket auch (wieder) vor dem cleverref-Paket laden, d.h. die Ladereihenfolge sollte diesbezüglich mittlerweile egal sein. Es gab da für eine gewissen Zeit eine Unverträglichkeit, die aber behoben wurde. Updaten der TeX-Distribution ist empfehlenswert.


%\AtBeginDocument{\let\Orilabel\label}%
...
%\Orilabel{fig:01:054a}

Das war mal ein Workaround für einen Fehler im caption-Paket, der aber auch schon länger behoben ist bzw. sein sollte.

rfischer
03-01-2012, 22:25
Super - herzlichen Dank!!!!!! Das läuft perfekt... :)