Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Subfloats referenzieren

  1. #1
    Ignatio Memo
    Gast

    Question Subfloats referenzieren

    Hi!

    Ich schreibe gerade an meiner Diplomarbeit und würde gerne meine subfigures mit dem \ref command referenzieren - und zwar in der Form, dass im Text dann ...see Fig. 1(a) steht und NICHT Fig. 1a. Es fehlen also die runden Klammern um das Subfigurelabel.

    Hier ein Mimimalbeispiel mit allen von mir verwendeten packages.

    Code:
    \documentclass[a4paper, 8pt]{article}
    
    \usepackage[hang, font=small, labelfont=bf, textfont=it]{caption}
    \usepackage{xspace}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{graphicx}
    \usepackage{subfig}
    \usepackage{upgreek}
    \usepackage{textcomp}
    \usepackage[squaren, thinqspace]{SIunits}
    \usepackage{epsfig}
    \usepackage[dvipdfm, pdfauthor=xx]{hyperref}
    
    \begin{document}
    
    \begin{figure}
      \centering
      \subfloat[sub1]{\label{fig:sub1}}
      \\
      \subfloat[sub2]{\label{fig:sub2}}
      \caption{Two subfigures}
      \label{fig:fig1}
    \end{figure}
    
    Reference to Fig.~\ref{fig:sub1} should read Fig.~1(a). 
    It works with the subref command, see Fig. \ref{fig:fig1}\subref{fig:sub1}.
    \end{document}
    Mit dem alten \subfigure package erhalte ich das gewünschte Verhalten automatisch (im obigen code subfigure statt subfig laden und \subfloat durch \subfigure ersetzen), würde aber ungerne weiter veraltete packages verwenden. Die Variante mit \ref und \subref funktioniert zwar, ist mir allerdings zu viel Tipparbeit...

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Das neue subfig-Paket hat eine Trennung vollzogen, die AFAIK im alten subfigure-Paket so noch nicht vorhanden war: Die Trennung zwischen der eigentlichen Abbildungsnummer (z.B. "a") und der Darstellung in der Abbildung, z.B. "("+nummer+")". Eine solche Trennung ist in LaTeX durchaus üblich, so z.B. auch in der Darstellung von Nummerierungen, siehe z.B. hier:

    http://www.mrunix.de/forums/showthread.php?t=52275

    wo diese Trennung zwischen Zählerdarstellung und Beschriftung mittels der beiden Makros \theenumi und \labelenumi geschieht.

    Bei den subfigures ist die Darstellung des reinen Zählers durch \thesubfigure bzw. \thesubtable geregelt, analog zu \thesection, \thefigure etc.

    Dies ist als

    Code:
    \newcommand\thesubfigure{\alph{subfigure}}
    vordefiniert, sorgt also für die einfache alphanumerische Darstellung des "subfigure"-Zählers, beginnend mit "a". (Wollte man hier z.B. eine normale Nummerierung, beginnend mit "1", so würde man \roman statt \alph nehmen.)

    Die Darstellung in der Abbildung wird über die Option "labelformat=" geregelt, voreingestellt ist hier "labelformat=parens", die Nummer wird also in der Abbildungsbeschriftung selber in Klammern dargestellt.

    Möchte man nun die Klammern der eigentlichen Nummer zuordnen, so daß sie auch in Referenzen und im Abbildungsverzeichnis erscheinen, muß man diese beiden Dinge umstellen. In deinem konkreten Falle sollte

    Code:
    \captionsetup[subfigure]{labelformat=simple}
    \renewcommand\thesubfigure{(\alph{subfigure})}
    (nach \usepackage{subfig}) das gewünschte liefern.

    Liebe Grüße,
    Axel
    Geändert von sommerfee (08-08-2007 um 10:42 Uhr)

  3. #3
    Ignatio Memo
    Gast
    Hallo Axel,

    schonmal vielen Dank für die ausführliche und verständliche Antwort, das funktioniert jetzt mit \ref wie gewünscht!

    Allerdings hat sich auch schon in meinem Miminalbeispiel durch diese Umdefinition ein weiterer Schönheitsfehler eingeschlichen: \subref gibt nunmehr nicht mehr (a) aus sondern ((a)) - hier ist nun also eine Klammer auf jeder Seite zu viel... kann man da was machen?

    danke nochmal!

  4. #4
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Ja, stimmt, an das \subref hatte ich nicht gedacht, sorry. Ich habe mir das gerade mal angesehen und finde es verwirrend.

    Auf der einen Seite gibt es das Gestaltungsmerkmal "subrefformat=", mit dem man wohl das Format von \subref einstellen kann, aber nur von \subref*, ich würde naiverweise vermuten, daß es auch bei \subref greifen sollte. (Bug? Ich werde beizeiten mal in der subfig-Dokumentation nach \subref und "subrefformat=" schauen, vielleicht soll das ja so wie es ist.)

    Bei \subref (ohne Stern) greift hingegen das "listofformat=", welches eigentlich für die Gestaltung im Abbildungsverzeichnis zuständig ist. Dies ist auf "listofformat=subparens" vordefiniert, so daß man hier zusätzliche Klammern erhält. Mit insgesamt

    Code:
    \captionsetup[subfigure]{labelformat=simple,listofformat=subsimple}
    \renewcommand\thesubfigure{(\alph{subfigure})}
    solltest du also (endlich) das gewünschte bekommen. (Diesmal habe ich es auch getestet, was ich zugegebenermaßen naiverweise beim letzten Mal nicht getan hatte )

    Gruß,
    Axel
    Geändert von sommerfee (08-08-2007 um 12:04 Uhr)

  5. #5
    Ignatio Memo
    Gast

    Thumbs up

    Hallo Axel,

    jetzt funktioniert es absolut einwandfrei. Danke für die nette Hilfe, da wäre ich alleine wohl nie drauf gekommen

Lesezeichen

Berechtigungen

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