Anzeige:
Ergebnis 1 bis 3 von 3

Thema: cleveref, subfig, sidecap und caption

  1. #1
    Registrierter Benutzer Avatar von rfischer
    Registriert seit
    12.06.2009
    Ort
    Heidelberg
    Beiträge
    20

    cleveref, subfig, sidecap und caption

    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:
    Code:
    \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,singlelinecheck=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,singlelinecheck=false}
    \sidecaptionvpos{figure}{c}
    \usepackage{caption}%AFTER CLEVEREF PACKAGE!!!!!!!!
    \captionsetup{font=footnotesize,labelfont=bf,singlelinecheck=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.
    Beste Grüße,
    Robert Fischer.

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von rfischer Beitrag anzeigen
    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:

    Code:
    \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=false,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,singlelinecheck=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.
    Geändert von sommerfee (03-01-2012 um 18:58 Uhr)

  3. #3
    Registrierter Benutzer Avatar von rfischer
    Registriert seit
    12.06.2009
    Ort
    Heidelberg
    Beiträge
    20
    Super - herzlichen Dank!!!!!! Das läuft perfekt...
    Beste Grüße,
    Robert Fischer.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •