Setzen von Abbildungs- und Tabellenbeschriftungen mit dem caption-Paket^{∗}

Axel Sommerfeldt

                 caption@sommerfeldt.net

16. Juli 2004

Zusammenfassung

Das caption Paket bietet einem Mittel und Wege das Erscheinungsbild der Bildunterschriften und Tabellenüberschriften den eigenen Wünschen bzw. bestimmten Vorgaben anzupassen. Hierbei wurde viel Wert auf die reibungslose Zusammenarbeit und in die Integration anderer Dokumentenklassen und Pakete gelegt.^{1}

1 Einleitung

Mit \caption gesetzte Bildunterschriften und Tabellenüberschriften werden von den Standard-Dokumentenklassen eher stiefmütterlich behandelt. In der Regel schlicht als ganz normaler Absatz gesetzt, ergibt sich keine signifikante optische Abgrenzung vom eigentlichen Text, wie z.B. hier:

Abbildung 1: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

Es sollte aber eine Möglichkeit geben, diesem Umstand abzuhelfen. Es wäre zum Beispiel nett, wenn man den Text der Unterschrift etwas kleiner gestalten, extra Ränder festlegen oder den Zeichensatz des Bezeichners dem der Kapitelüberschriften anpassen könnte. So in etwa:

Abbildung 2: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

Mit Hilfe dieses Paketes können Sie dies leicht bewerkstelligen; es sind viele vorgegebene Parameter einstellbar, Sie können aber auch eigene Gestaltungsmerkmale einfließen lassen.

∗Dieses Paket hat die Versionsnummer v3.0c, zuletzt geändert am 2004/07/16.

1Für die aktuelle Version 3.0 dieses Paketes wurde die Benutzerschnittstelle zusammen mit Steven D. Cochran und Frank Mittelbach komplett überarbeitet.

2 Verwendung des Paketes

\usepackage Mittels
     \usepackage[⟨Optionen⟩]{caption}[2004/07/16]

in dem Vorspann des Dokumentes wird das caption Paket eingebunden, die Optionen legen hierbei das Aussehen der Über- und Unterschriften fest. So würde z.B.

     \usepackage[margin=10pt,font=small,labelfont=bf]{caption}

zu dem obrigen Ergebnis mit Rand, kleinerem Zeichensatz und fetter Bezeichnung führen.

\captionsetup Eine Änderung der Parameter ist auch zu einem späteren Zeitpunkt jederzeit mittels des Befehls

     \captionsetup[⟨Typ⟩]{⟨Optionen⟩}

möglich. So sind z.B. die Befehlssequenzen

     \usepackage[margin=10pt,font=small,labelfont=bf]{caption}

und

     \usepackage{caption}
     \captionsetup{margin=10pt,font=small,labelfont=bf}

in ihrer Wirkung identisch.

Weiterhin gilt zu beachten, daß sich die Verwendung von \captionsetup innerhalb von Umgebungen nur auf die Umgebung selber auswirkt, nicht aber auf den Rest des Dokumentes. Möchte man also z.B. die automatische Zentrierung der Abbildungsunterschrift nur in einem konkreten Falle ausschalten, so kann dies mit

     \begin{figure}

…

       \captionsetup{singlelinecheck=off}
       \caption{. . . }
     \end{figure}

geschehen, ohne daß die restlichen Abbildungsunterschriften hiervon beeinträchtigt werden.

(Der optionale Parameter ⟨Typ⟩ wird in Abschnitt 4: ”Nützliches“ behandelt.)

3 Beschreibung der Optionen

3.1 Formatierung

format= Eine Abbildungs- oder Tabellenbeschriftung besteht im wesentlichen aus drei Teilen: Dem Bezeichner (etwa ”Abbildung 3“), dem Trenner (etwa ”: “) und dem eigentlichen Text. Mittels der Option

     format=⟨Name⟩

wird festgelegt, wie diese drei Teile zusammengesetzt werden. Für ⟨Name⟩ sind folgende Möglichkeiten verfügbar:^{2}

default Die Beschriftung wird als normaler Abschnitt gesetzt. (Dies ist das Standardverhalten.)

hang Der Text wird so gesetzt, daß er an dem Bezeichner ”hängt“, d.h. der Platz unter dem Bezeichner und dem Trenner bleibt leer.

Ein Beispiel: Die Angabe der Option

     format=hang

führt zu Abbildungsunterschriften der Art

Abbildung 3: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

indention= Bei beiden Formaten (default und hang) kann der Einzug der Beschriftung ab der zweiten Textzeile angepasst werden, dies geschieht mit Hilfe der Option

     indention=⟨Einzug⟩ ,

wobei anstelle von ⟨Einzug⟩ jedes beliebige feste Maß angegeben werden kann.

Zwei Beispiele:

     format=default,indention=.5cm

Abbildung 4: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

     format=hang,indention=-0.5cm

Abbildung 5: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.) labelformat= Mittels der Option

     labelformat=⟨Name⟩

wird die Zusammensetzung des Bezeichners festgelegt. Für ⟨Name⟩ sind folgende Möglichkeiten verfügbar:

empty Der Bezeichner ist leer. Diese Option macht nur in Verbindung mit

anderen Optionen (wie etwa labelsep=none) Sinn.

simple Der Bezeichner ist aus dem Namen und der Nummer zusammen-

gesetzt. (Dies ist das Standardverhalten.)

parens Die Nummer des Bezeichners wird in runde Klammern gesetzt.

Ein Beispiel: Die Optionen

     labelformat=parens,labelsep=quad

führen zu Abbildungsunterschriften der Art Abbildung (6) Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

labelsep= Mittels der Option

     labelsep=⟨Name⟩

wird die Zusammensetzung des Trenners festgelegt. Für ⟨Name⟩ sind folgende Möglichkeiten verfügbar:

none Der Trenner ist leer. Diese Option macht nur in Verbindung mit

anderen Optionen (wie etwa labelformat=empty) Sinn.

colon Der Trenner besteht aus einem Doppelpunkt und einem Leerzei-

chen. (Dies ist das Standardverhalten.)

period Der Trenner besteht aus einem Punkt und einem Leerzeichen. space Der Trenner besteht lediglich aus einem einzelnen Leerzeichen. quad Der Trenner besteht aus einem \quad. newline Als Trenner wird ein Zeilenumbruch verwendet.

2Es gibt hier wie auch bei vielen anderen Optionen die Möglichkeit, auch eigene Formate, Zeichensätze etc. zu definieren. Wie dies geht wird in Abschnitt 5: ”Eigene Erweiterungen“ dargelegt.

Zwei Beispiele:

     labelsep=period

Abbildung 7. Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

     labelsep=newline,singlelinecheck=false

Abbildung 8 Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

3.2 Textausrichtung

justification= Mittels der Option

     justification=⟨Name⟩

wird die Ausrichtung des Textes festgelegt. Für ⟨Name⟩ sind folgende Möglichkeiten verfügbar:

justified Der Text wird als Blocksatz gesetzt. (Dies ist das Standardverhalten.)

centering Der Text wird zentriert gesetzt.

centerlast Lediglich die letzte Zeile des Textes wird zentriert gesetzt.

centerfirst Lediglich die erste Zeile des Textes wird zentriert gesetzt.

raggedright Der Text wird linksbündig gesetzt.

RaggedRight Der Text wird ebenfalls linksbündig gesetzt. Hierfür wird jedoch im Gegensatz zu raggedright der Befehl \RaggedRight des ragged2e-Paketes verwendet, der L^{A}TEX das Trennen der Worte erlaubt.

raggedleft Der Text wird rechtsbündig gesetzt.

Einige Beispiele:

     justification=centerlast

Abbildung 9: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die

azimutale Wellenzahl ist mit m bezeichnet.)

     format=hang,justification=raggedright

Abbildung 10: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

     format=hang,justification=RaggedRight

Abbildung 11: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

singlelinecheck= In den Standard-Dokumentenclassen article, report und book sind die Abbildungs- und Tabellenbeschriftungen so realisiert, daß sie automatisch zentriert werden, wenn sie lediglich aus einer einzigen Textzeile bestehen:

Abbildung 12: Eine kurze Beschriftung.

Diesen Mechanismus übernimmt das caption-Paket und ignoriert damit bei solch kurzen Beschriftungen die mittels der Option justification= eingestellte Textausrichtung. Dieses Verhalten kann jedoch mit der Option

     singlelinecheck={⟨bool⟩}

reguliert werden. Setzt man für ⟨bool⟩ entweder false, no, off oder 0 ein, so wird der Zentrierungsmechnismus außer Kraft gesetzt. Die obrige, kurze Abbildungsunterschrift würde z.B. nach Angabe der Option

     singlelinecheck=false

so aussehen:

Abbildung 13: Eine kurze Beschriftung.

Setzt man für ⟨bool⟩ hingegen true, yes, on oder 1 ein, so wird die automatische Zentrierung wieder eingeschaltet. (Standardmäßig ist sie eingeschaltet.)

3.3 Zeichensätze

font= Das caption-Paket kennt 3 Zeichensätze: Denjenigen für die gesammte Beschriftung

labelfont=
textfont=

(font), denjenigen, der lediglich auf den Bezeichner und den Trenner angewandt wird (labelfont), sowie denjenigen, der lediglich auf den Text wirkt (textfont). So lassen sich die unterschiedlichen Teile der Beschriftung individuell mittels

font={⟨Zeichensatzoptionen⟩} ,
labelfont={⟨Zeichensatzoptionen⟩} und
textfont={⟨Zeichensatzoptionen⟩}

anpassen.

Als ⟨Zeichensatzoptionen⟩ sind eine Kombination aus folgendem erlaubt:

scriptsize Sehr kleine Schrift

footnotesize Fußnotengröße

small Kleine Schrift

normalsize Normalgroße Schrift

large Große Schrift

Large Größere Schrift

up Upright Schriftart it Italic Schriftart sl Slanted Schriftart sc Small Caps Schriftart md Medium Schriftserie bf Bold Schriftserie rm Roman Schriftfamilie sf Sans Serif Schriftfamilie

tt           Typewriter Schriftfamilie

Wird lediglich eine einzelne Zeichensatzoption ausgewählt, können die geschweiften Klammern entfallen, d.h. die Optionen font={small} und font=small sind in ihrer Wirkung identisch. Beispiele:

     font={small,it},labelfont=bf

Abbildung 14: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

     font=small,labelfont=bf,textfont=it

Abbildung 15: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

3.4 Ränder und Absätze

margin= Für die Abbildungs- und Tabellenbeschriftungen kann entweder ein extra Rand width= oder eine feste Breite festgelegt werden. Dies geschieht mit

margin=⟨Rand⟩ oder
width=⟨Breite⟩

In beiden Fällen wird die Beschriftung zentriert, d.h. der linke und rechte Rand sind immer gleich groß.

Zwei Beispiele hierzu:

     margin=10pt

Abbildung 16: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

     width=.75\textwidth

Abbildung 17: Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

parskip= Diese Option wirkt auf Abbildungs- oder Tabellenbeschriftungen, die aus mehr als einem Absatz bestehen; sie legt den Abstand zwischen den Absätzen fest.

parskip=⟨Abstand zwischen Absätzen⟩

Ein Beispiel:

     margin=10pt,parskip=5pt

Abbildung 18: Erster Absatz der Beschriftung; dieser enthält einigen Text, so daß die Auswirkungen der Optionen deutlich werden.

Zweiter Absatz der Beschriftung; dieser enthält ebenfalls einigen Text, so daß die Auswirkungen der Optionen deutlich werden.

hangindent= Die Option
     hangindent=⟨Einzug⟩

legt einen Einzug für alle Zeilen außer der jeweils ersten des Absatzes fest. Besteht die Beschriftung lediglich aus einem einzelnen Absatz, so ist die Wirkung mit der Option indention=⟨Einzug⟩ identisch, bei mehreren Absätzen zeigt sich jedoch der Unterschied:

     format=hang,indention=-.5cm

Abbildung 19: Erster Absatz der Beschriftung; dieser enthält einigen Text, so daß die Auswirkungen der Optionen deutlich werden. Zweiter Absatz der Beschriftung; dieser enthält ebenfalls einigen Text, so daß die Auswirkungen der Optionen deutlich werden.

     format=hang,hangindent=-.5cm

Abbildung 20: Erster Absatz der Beschriftung; dieser enthält einigen Text, so daß

die Auswirkungen der Optionen deutlich werden.

Zweiter Absatz der Beschriftung; dieser enthält ebenfalls einigen Text, so daß die Auswirkungen der Optionen deutlich werden.

3.5 Stile

style= Eine geeignete Kombination aus den bisher vorgestellten Optionen wird Stil genannt; dies ist in etwa mit dem Seitenstil vergleichbar, den man bekanntermaßen mit \pagestyle einstellen kann.

Einen vordefinierten Abbildungs- und Tabellenbeschriftungsstil kann man mit der Option

     style=⟨Stil⟩

auswählen. Das caption-Paket definiert in der Regel lediglich den Stil default, der alle vorgehenden Optionen auf die Standardbelegung zurücksetzt, d.h. die Angabe der Option

     style=default

entspricht den Optionen

     format=default,labelformat=simple,labelsep=colon,
     justification=justified,font=default,labelfont=default,
     textfont=default,margin=0pt,indention=0pt,parindent=0pt
     hangindent=0pt,singlelinecheck=true

3.6 Abstände

aboveskip= Die Standard-L^{A}TEX-Klassen article, report und book definieren zwei Abstände, belowskip= die in Zusammenhang mit den Abbildungs- und Tabellenbeschriftungen gebraucht

werden: \abovecaptionskip wird vor der Beschriftung angewandt und ist auf 10pt vorbelegt. \belowcaptionskip wird nach der Beschriftung angewandt und ist auf 0pt vorbelegt.

Beide Abstände lassen sich gewöhnlich mit \setlength ändern, aber auch mit den caption-Optionen

aboveskip=⟨Abstand nach oben⟩ und
belowskip=⟨Abstand nach unten⟩ .

position= Die sture Anwendung von \abovecaptionskip und \belowcaptionskip bei Be-

schriftungen birgt einen großen Nachteil: Ist die Beschriftung über und nicht unter der Abbildung oder Tabelle (wie bei Tabellen durchaus üblich), so ist die Vorbelegung dieser beiden Abstände nicht mehr sinnvoll, da hier kein Abstand zwischen der Beschriftung und der Tabelle gesetzt wird. (Wir erinnern uns: \belowcaptionskip ist auf 0pt, also kein Abstand, vorbelegt.)

Man vergleiche:

Tabelle 1: Eine Tabelle

A B C D

A B C D

Tabelle 2: Eine Tabelle

Mit Hilfe des Parameters position kann man jedoch festlegen, wie L^{A}TEX die Beschriftung behandeln soll, ob als Überschrift oder als Unterschrift:

     position=top (oder position=above)

gibt an, daß die Abstände so gewählt werden, daß sie für Überschriften sinnvoll gewählt sind und

     position=bottom (oder position=below)

gibt an, daß die Abstände so gewählt werden, daß sie für Überschriften sinnvoll gewählt sind. (Dies ist die Standardeinstellung.)

Fügt man nun ein \captionsetup{position=top} in die linke Tabelle vor dem \caption Befehl ein, so ergeben sich im Vergleich zwischen Überschrift und Unterschrift stimmige Abstände:

Tabelle 3: Eine Tabelle

A B C D

A B C D

Tabelle 4: Eine Tabelle

(Technisch ist dies so realisiert, daß bei Überschriften die Abstände \abovecaptionskip

und \belowcaptionskip vertauscht werden, so daß \abovecaptionskip immer

derjenige Abstand ist, der zwischen Tabelle und Beschriftung zur Anwendung kommt.)

tableposition= Sinnvoll läßt sich diese Option insbesondere zusammen mit dem optionalen Parameter bei \captionsetup anwenden (siehe auch Abschnitt 4: ”Nützliches“):

     \captionsetup[table]{position=top}

bewirkt, daß bei allen Tabellen die Beschriftung bzgl. der Abstände als Überschrift

Neues Feature behandelt wird. Da dies eine sehr gebräuchliche Einstellung ist, stellt das caption-

v3.0a

Paket diesen Befehl auch als abkürzende Option für \usepackage zur Verfügung:

     \usepackage[. . . ,tableposition=top]{caption}

entspricht

     \usepackage[. . . ]{caption}
     \captionsetup[table]{position=top}

4 Nützliches

\caption Der Befehl

\caption[⟨Kurzform für das Verzeichnis⟩]{⟨Beschriftung⟩}

erzeugt eine Über- bzw. Unterschrift innerhalb einer gleitenden Umgebung wie figure oder table. Dies ist an sich nichts neues, neu ist allerdings, daß kein Eintrag ins Abbildungs- oder Tabellenverzeichnis vorgenommen wird, wenn eine leere Kurzform angegeben wird, etwa so:

     \caption[]{Dies ist eine Abbildung, die nicht ins
                Abbildungsverzeichnis aufgenommen wird}

\caption* Das longtable-Paket definiert zusätzlich zum Befehl \caption auch den Befehl \caption*, der eine Beschriftung ohne Bezeichner und ohne Eintrag ins Tabellenverzeichnis erzeugt. So erzeugt z.B. der Code

     \begin{longtable}{cc}
       \caption*{Eine Tabelle}\\
       A & B \\
       C & D \\
     \end{longtable}

diese Tabelle:

Eine Tabelle

A B
C D

Das caption-Paket bietet diesen Mechanismus auch für normale Abbildungs- und Tabellenbeschriftungen an. Ferner kann hier auch abweichend ein Verzeichniseintrag erzeugt werden, indem dieser explizit in eckigen Klammern mit angegeben wird. Etwa so:

     \begin{table}
       \caption*[Eine Tabelle]{Eine Tabelle}
       \begin{tabular}{cc}
         A & B \\
         C & D \\
       \end{longtable}
     \end{table}

\captionof Der Befehl \caption funktioniert in der Regel nur innerhalb von gleitenden Um- \captionof* gebungen, manchmal möchte man ihn jedoch auch anderweitig anwenden, etwa

um eine Abbildung in eine nicht-gleitende Umgebung wie minipage zu setzen.

Hierfür stellt das caption-Paket den Befehl

\captionof{⟨Umgebungstyp⟩}[⟨Kurzform⟩]{⟨Langform⟩}

zur Verfügung. Die Angabe des Umgebungstypen ist hierbei notwendig, damit der gewünschte Bezeichner gewählt wird und der Eintrag in das richtige Verzeichnis vorgenommen wird. Ein Beispiel:

     \captionof{figure}{Abbildung}
     \captionof{table}{Tabelle}

führt zu folgendem Ergebnis:

Abbildung 21: Abbildung

Tabelle 6: Tabelle

Analog zu \caption* gibt es auch den Befehl \captionof* für Beschriftungen ohne Bezeichner und ohne Verzeichniseintrag, sofern nicht explizit angegeben.

Beide Befehle, sowohl \captionof als auch \captionof*, sollten nur innerhalb von Umgebungen (wie minipage oder \parbox) angewandt werden. Zum einen kann es sonst passieren, daß L^{A}TEX zwischen dem Inhalt und der Beschreibung einen Seitenumbruch setzt; zum anderen kann es bei Mißachtung gar zu seltsamen Effekten (wie falsche Abstände um die Beschriftungen herum) kommen!

\ContinuedFloat Manchmal möchte man Abbildungen oder Tabellen aufteilen, jedoch ohne den einzelnen Teilen eine eigene Abbildungs- oder Tabellennummer zu geben. Hierfür stellt das caption-Paket den Befehl

     \ContinuedFloat

zur Verfügung, der gleich als erstes innerhalb der folgenden Teile angewandt werden sollte. Er verhindert, daß die Zählung fortgeführt wird; eine Abbildung oder Tabelle, die ein \ContinuedFloat enthält, erhält also die gleiche Nummer wie die vorherige Abbildung oder Tabelle.

Ein Beispiel:

     \begin{table}
     \caption{Eine Tabelle.}

…

     \end{table}

…

     \begin{table}\ContinuedFloat
     \caption{Eine Tabelle. (fortgef"uhrt)}

…

     \end{table}

ergibt als Ergebnis:

Tabelle 7: Eine Tabelle. … Tabelle 7: Eine Tabelle. (fortgeführt)

\captionsetup Den Befehl \captionsetup haben wir ja schon im Abschnitt 2: ”Verwendung des Paketes“ kennengelernt, uns dort allerdings die Bedeutung des optionalen Parameters ⟨Typ⟩ aufgespart.

Wir erinnern uns, die Syntax des Befehls lautet

     \captionsetup[⟨Typ⟩]{⟨Optionen⟩}

Wird hierbei ein ⟨Typ⟩ angegeben, so werden die Optionen nicht unmittelbar umgesetzt, sondern werden lediglich vermerkt und kommen erst dann zum Einsatz, wenn eine Über- bzw. Unterschrift innerhalb des passenden gleitenden Umgebungstyps gesetzt wird. So wirkt sich z.B. die Angabe

     \captionsetup[figure]{⟨Optionen⟩}

lediglich auf die Unterschriften aus, die innerhalb einer figure-Umgebung gesetzt werden.

Ein Beispiel:

     \captionsetup{font=small}
     \captionsetup[figure]{labelfont=bf}

führt zu Abbildungs- und Tabellenunterschriften der Art:

Abbildung 22: Eine Abbildung

Tabelle 8: Eine Tabelle

Wie man sieht, führt das \captionsetup[figure]{labelfont=bf} lediglich dazu,

daß Abbildungsunterschriften mit fettem Bezeichner gesetzt werden, alle anderen Unter- bzw. Überschriften werden hiervon nicht beeinflußt.

\clearcaptionsetup Um diese vermerkten, typbezogenen Parameter aus dem Gedächnis von L^{A}TEX zu löschen, gibt es den Befehl

     \clearcaptionsetup{⟨Typ⟩} .

\clearcaptionsetup{figure} würde z.B. die obrige Sonderbehandlung der Abbildungsunterschriften wieder aufheben:

Abbildung 23: Eine Abbildung

Tabelle 9: Eine Tabelle

Als Umgebungstypen mit Unter- bzw. Überschriften gibt es in der Regel nur zwei: figure und table. Wie wir jedoch später sehen werden, kommen durch die Verwendung spezieller L^{A}TEX-Pakete (wie etwa das float-Paket) ggf. weitere Typen hinzu, deren Beschriftungen ebenfalls derart individuell angepasst werden können.

5 Eigene Erweiterungen

Wem die vorhandenen Formate, Trenner, Textausrichtungen, Zeichensätze und Stile nicht ausreichen, der hat die Möglichkeit, sich eigene zu definieren. Hierzu gibt es eine Reihe von Befehlen, die in dem Vorspann des Dokumentes (das ist der Teil vor \begin{document}) zum Einsatz kommen.

\DeclareCaptionFormat Eigene Formate können mit dem Befehl

     \DeclareCaptionFormat{⟨Name⟩}{⟨Code mit #1, #2 und #3 ⟩}

definiert werden. Für #1 wird später der Bezeichner, für #2 der Trenner und für #3 der Text eingesetzt. So ist z.B. das Standardformat default, welches die Beschriftung als gewöhnlichen Absatz formatiert, folgendermaßen in caption.sty definiert:

     \DeclareCaptionFormat{default}{#1#2#3\par}

\DeclareCaptionLabelFormat Ähnlich können auch eigene Bezeichnerformate definiert werden:

     \DeclareCaptionLabelFormat{⟨Name⟩}{⟨Code mit #1 und #2 ⟩}

Bei den Bezeichnerformaten wird hierbei für #1 der Name (also z.B. ”Abbildung“), für #2 die Nummer (also z.B. ”12“) eingesetzt.

\bothIfFirst Hierbei gibt es eine Besonderheit zu beachten: Wird das Bezeichnerformat auch in \bothIfSecond Verbindung mit dem subfig-Paket[7] verwendet, so kann der Bezeichnername (also

#1) auch leer sein. Um dies flexibel handhaben zu können, stellt das caption-Paket die Befehle

\bothIfFirst{⟨Erstes Argument⟩}{⟨Zweites Argument⟩} und \bothIfSecond{⟨Erstes Argument⟩}{⟨Zweites Argument⟩} zur Verfügung. \bothIfFirst testet, ob das erste Argument leer ist, \bothIfSecond, ob das zweite Argument leer ist. Nur wenn dies nicht der Fall ist, werden beide Argumente ausgegeben, ansonsten werden beide unterdrückt. So ist z.B. das Standard-Bezeichnerformat simple nicht, wie man naiverweise annehmen könnte, als

     \DeclareCaptionLabelFormat{simple}{#1 #2}

definiert, weil dies zu einem störendem führenden Leerzeichen führen würde, wenn #1 leer ist. Stattdessen findet sich in caption.sty folgende Definition, die sowohl mit \caption als auch mit \subfloat harmoniert:

     \DeclareCaptionLabelFormat{simple}{\bothIfFirst{#1}{ }#2}

d.h. das Leerzeichen kommt nur dann zum Einsatz, wenn #1 nicht leer ist. Eigene Trenner werden mit

\DeclareCaptionLabelSeparator
     \DeclareCaptionLabelSeparator{⟨Name⟩}{⟨Code⟩}

definiert. Auch hier wieder als einfaches Beispiel die Definition des Standard-Tren-

ners aus caption.sty:
     \DeclareCaptionLabelSeparator{colon}{: }

\DeclareCaptionJustification Eigene Textausrichtungen können mit

     \DeclareCaptionJustification{⟨Name⟩}{⟨Code⟩}

definiert werden. Der ⟨Code⟩ wird dann der Beschriftung vorangestellt, so führt z.B. die Verwendung der Ausrichtung

     \DeclareCaptionJustification{raggedright}{\raggedright}

dazu, daß alle Zeilen der Beschriftung linksbündig ausgegeben werden.

\DeclareCaptionFont Eigene Zeichensatzoptionen können mit

     \DeclareCaptionFont{⟨Name⟩}{⟨Code⟩}

definiert werden. So definiert z.B. das caption-Paket die Optionen small und bf folgendermaßen:

     \DeclareCaptionFont{small}{\small}
     \DeclareCaptionFont{bf}{\bfseries}

\DeclareCaptionStyle Zu guter letzt noch die Definition eigener Stile. Stile sind einfach eine Ansammlung von geeigneten Einstellungen, die unter einem eigenen Namen zusammengefasst werden und mit der Paketoption style=⟨Name⟩ ausgewählt werden können. Sie werden wie folgt definiert:

\DeclareCaptionStyle{⟨Name⟩}[⟨zusätzliche Optionen⟩]{⟨Optionen⟩}

Hierbei ist zu beachten, daß die ⟨Optionen⟩ immer auf den Standardeinstellungen basieren (siehe auch Abschnitt 3.5: ”Stile“), es brauchen also nur davon abweichende Optionen angegeben werden.

Sind ⟨zusätzliche Optionen⟩ angegeben, so kommen diese automatisch zusätzlich zum Einsatz, sofern die Beschreibung in eine einzelne Zeile passt und diese Abfrage nicht mit singlelinecheck=off ausgeschaltet wurde.

Als Beispiel muß mal wieder eine einfache Definition aus diesem Paket herhalten:

     \DeclareCaptionStyle{default}[justification=centering]{}

5.1 Beispiele

Möchte man als Trenner einen Punkt und einen Zeilenumbruch haben, so ließe sich das wie folgt realisieren:

     \DeclareCaptionLabelSeparator{period-newline}{. \newline}
Wählt man diesen Trenner mit \captionsetup{labelsep=period-newline} aus,

so ergeben sich Beschriftungen der Art

Abbildung 24.

Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

Für kurze Beschriftungen, die in eine Zeile passen, mag dieses Erscheinungsbild jedoch störend sein, selbst wenn die automatische Zentrierung (mit singlelinecheck=off) ausgeschaltet ist:

Abbildung 25.

Eine Abbildung.

Abhilfe schafft ein eigener Stil, der bei solchen Beschriftungen einen anderen Trenner ohne Zeilenumbruch auswählt:

     \DeclareCaptionStyle{period-newline}%
       [labelsep=period]{labelsep=period-newline}

Abbildung 26. Eine Abbildung. Möchte man die automatische Zentrierung ebenfalls implementieren, so wäre

     \DeclareCaptionStyle{period-newline}%
       [labelsep=period,justification=centering]%
       {labelsep=period-newline}

eine geeignete Definition:

Abbildung 27. Eine Abbildung.

Ein anderes Beispiel: Die Beschriftungen sollen wie folgt aussehen:

Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

(Abbildung 28)

Dies ließe sich z.B. wie folgt realisieren:

  \DeclareCaptionFormat{reverse}{#3#2#1}
  \DeclareCaptionLabelFormat{fullparens}{(\bothIfFirst{#1}{ }#2)}
  \DeclareCaptionLabelSeparator{fill}{\hfill}
  \captionsetup{format=reverse,labelformat=fullparens,
                labelsep=fill,font=small,labelfont=it}

Ein weiteres Beispiel: Der Bezeichner soll in den linken Rand verlagert werden, so daß die komplette Absatzbreite der Beschriftung selber zugute kommt:

  \DeclareCaptionFormat{llap}{\llap{#1#2}#3\par}
  \captionsetup{format=llap,singlelinecheck=no,
                labelsep=quad}

Das Ergebnis wären Beschriftungen wie diese:

Abbildung 29 Die auf die Rotationsfrequenz des Innenzylinders normierten Eigenfrequenzen der gefundenen Grundmoden der Taylor-Strömung für η = 0.5. (Die azimutale Wellenzahl ist mit m bezeichnet.)

6 Verwendung mit speziellen Dokumentenklassen

Neue Beschreibung Das caption-Paket ist auf die Verwendung mit den Standard-Dokumentenklas-

v3.0c

sen article, report und book ausgelegt, es sollte jedoch auch mit anderen Dokumentenklassen zusammenarbeiten. (Falls nicht bitte ich um eine E-Mail an

caption@sommerfeldt.net. Danke.)

Möchte man das caption-Paket mit den KOMA-Script-Klassen oder der memoir-Klasse verwenden, so ist sorgfältig abzuwägen, ob die in diesen Klassen reichlich enthaltenden Möglichkeiten zur Anpassung der Beschriftungen nicht ausreichend sind. Denn das caption-Paket funktioniert zwar auch mit den KOMA-Script-Klassen und der memoir-Klasse, allerdings sollte darauf geachtet werden, daß die verschiedenen Anpassungsmöglichkeiten nicht im Dokument vermischt werden. Ist das caption-Paket erst einmal geladen, verlieren

Befehle wie \captionabove, \captionbelow, \captionformat, \figureformat,
\tableformat, \setcapindent, \setcaphanging, \captionstyle usw. ihre Wir-

kung.

7 Interaktion mit anderen Paketen

Das caption-Paket enthält spezielle Anpassungen an andere Pakete, damit die Beschriftungen dort ebenfalls genauso ausgegeben werden, wie man es mit den oben genannten Optionen eingestellt hat. Im einzelnen sind dies die folgenden Pakete:

float  Erlaubt die Definition eigener gleitenen Umgebungsstile
listings  Setzt Quelltexte diverser Programmiersprachen
longtable  Setzt Tabellen, die sich über mehrere Seiten erstrecken können
rotating  Unterstützt rotierende Abbildungen und Tabellen
sidecap  Erlaubt das Setzen von Beschriftungen neben Abbildungen
supertabular Setzt Tabellen, die sich über mehrere Seiten erstrecken können

Neues Feature Wird eines dieser Pakete zusammen mit dem caption-Paket verwendet, steht einem

v3.0b

zusätzlich die Möglichkeit bereit, mittels

\captionsetup[⟨Umgebung⟩]{⟨Optionen⟩}

Optionen festzulegen, die lediglich für diese Umgebung gelten. So bewirkt z.B.

     \captionsetup[lstlisting]{labelfont=bf} ,

daß Beschriftungen innerhalb der lstlisting-Umgebung automatisch mit fettem Bezeichner gesetzt werden. (Dies funktioniert allerdings nicht mit den sideways-Umgebungen, die vom rotating-Paket angeboten werden.)

Ist die Unterstützung eines dieser Pakete im speziellen Falle nicht erwünscht, so kann dies durch Angabe der Option

     \usepackage[. . . ,⟨Paketname⟩=no]{caption}

erreicht werden, etwa float=no, wenn die Unterstützung des float-Paketes nicht erwünscht wird. (Hinweis: Diese Optionen können nur innerhalb des \usepackage-Befehls angegeben werden, also insbesondere nicht nachträglich mit \captionsetup.)

Nähere Informationen zu den einzelnen Paketen entnehmen Sie bitte der dazugehörigen Anleitung oder dem L^{A}TEX-Begleiter[1].

7.1 Das float-Paket

Ein sehr nützliches Feature stellt das float-Paket[2] mit dem Platzierungsparameter [H] bereit: Anders als beim Parameter h, den L^{A}TEX bereitstellt und der lediglich eine Empfehlung darstellt, die Abbildung oder Tabelle nach Möglichkeit ”hier“ zu setzen, ist das H viel kompromißloser, denn es erzwingt das Setzen genau an diesem Ort und nirgendwo anders.

Weiterhin definiert es für gleitende Umgebungen die Stile plain, plaintop, ruled und boxed. Für die vorhandenen Umgebungen figure und table kann hierbei der Stil geändert werden, ferner können eigene Umgebungstypen definiert werden, die ggf. ein eigenes Verzeichnis bekommen.

Kommt das float-Paket zusammen mit dem caption-Paket zum Einsatz, so wird automatisch der Beschriftungsstil ruled definiert, der das Aussehen der Beschriftungen innerhalb von Abbildungen des Umgebungsstils ruled regelt:

     \DeclareCaptionStyle{ruled}{labelfont=bf,labelsep=space}

Für den Anwender bedeutet dies, daß allgemein getätigte Einstellungen an den Beschriftungen hier unwirksam sind; stattdessen werden die Beschriftungen genau so gesetzt, wie vom float-Paket stilistisch vorgegeben, nämlich so:

Programm 7.1 Das erste Programm. Dies hat nichts mit dem Paket an sich zu tun, dient aber als Beispiel. Man beachte den ruled Stil.

#include <stdio.h>
int main(int argc, char **argv)
{
       for (int i = 0; i < argc; ++i)
               printf("argv[%d] = %s\n", i, argv[i]);
       return 0;
}

Möchte man das Aussehen dieser Beschriftungen ändern, ist der Stil ruled mittels

     \DeclareCaptionStyle{ruled}{⟨Optionen⟩}

geeignet zu definieren.

Dieser Mechanismus funktioniert auch bei allen anderen Umgebungsstilen, d.h. auch bei Umgebungen des Types plain und boxed kann ein geeigneter Beschriftungsstil mit gleichem Namen definiert werden, der dann automatisch bei gleitenden Umgebungen dieses Types zum Einsatz kommt.

7.2 Das listings-Paket

Neue Beschreibung Das listings-Paket[3] erlaubt die Einbindung von Quelltexten diverser Program-

v3.0b

miersprachen.

Achtung: Die Zusammenarbeit klappt erst ab der Version 1.2 des listings-Paketes. Ältere Versionen verursachen eine Fehlermeldung!

7.3 Das longtable-Paket

Das longtable-Paket[4] definiert die Umgebung longtable, die sich wie eine Tabelle anwenden läßt, aber im Gegensatz zu tabular Seitenumbrüche innerhalb der Tabelle gestattet.

Zusätzlich zu den regulären Optionen, die für Tabellen festgelegt wurden, besteht die Möglichkeit.

7.4 Das rotating-Paket

Das rotating-Paket[5] stellt u.a. die gleitenden Umgebungen sidewaysfigure und sidewaystable bereit, die im Gegensatz zu figure und table um 90 Grad gedreht werden und immer eine ganze Seite einnehmen.

7.5 Das sidecap-Paket

Neue Beschreibung Das sidecap-Paket[6] definiert die Umgebungen SCfigure und SCtable, die analog

v3.0b

zu figure und table funktionieren, aber Beschriftungen neben der Abbildung oder Tabelle erlauben.

Bei der Verwendung des sidecap-Paketes ist zu beachten, daß eine dort angegebene

Option raggedright, raggedleft oder ragged den Parameter justification=

des caption-Paketes für die betreffenen Umgebungen überschreibt, d.h. bei Beschriftungen neben der Abbildung oder Tabelle erhält die Option des sidecap-Paketes den Vorzug.

listof= Ferner liegt es im Design des sidecap-Paketes begründet, daß das Unterdrücken des Verzeichniseintrages mit \caption[]{… } hier nicht klappt. Als Alternative kann in diesen Fällen die Unterdrückung mittels \captionsetup{listof=false} innerhalb der Abbildung oder Tabelle geschehen.

[figure] Abbildung 30: Ein kleines Beispiel mit Beschriftung neben der Abbildung.

7.6 Das supertabular-Paket

Das supertabular-Paket[8] definiert, ähnlich wie das longtable-Paket, eine Umgebung supertabular, die sich ebenfalls wie eine Tabelle anwenden läßt, aber im Gegensatz zu tabular Seitenumbrüche innerhalb der Tabelle gestattet.

Eine ausführliche Behandlung der Unterschiede zwischen den beiden Paketen longtable und supertabular ist im Buch ”Der L^{A}TEX-Begleiter“ [1] zu finden.

7.7 Bekannte Inkompatibilitäten

Neue Beschreibung Die Verwendung des caption-Paketes in Verbindung mit folgenden Paketen ist

v3.0b

nicht empfehlenswert, da es in der Regel zu unerwünschten Seiteneffekten oder gar Fehlern kommen kann:

ccaption, hvfloat, nonfloat

Ferner müssen bei der Verwendung des hypcap-Paketes folgende Einschränkungen in Kauf genommen werden: Die Erweiterungen des \caption Befehls funktionieren nicht, die Einstellung labelformat= wird nicht beachtet und lokale Einstellungen mittels \captionsetup[…]{… } gelingen in der Regel nicht mehr. Dies liegt im Implementationsdesign des hypcap-Paketes begründet; der Abschnitt 1.3 ”Limitations“ der dazugehörigen Anleitung weißt auf diesen Umstand explizit hin.

8 Kompatibilität zu älteren Versionen

8.1 caption Version 1.x

Diese Version des caption-Paketes ist weitgehend kompatibel zu älteren Versionen des Paketes; alte Dokumente sollten sich also in der Regel ohne Probleme weiterhin übersetzen lassen. Jedoch ist zu beachten, daß eine Mischung aus alten Befehlen und neueren Optionen bzw. Befehlen nicht unterstützt wird bzw. zu unerwünschten Nebeneffekten führen kann.

Hier eine kurze Übersicht über die alten Optionen und Befehle und durch was sie in dieser Version des caption-Paketes ersetzt wurden:

caption 1.x  caption 3.x

   normal                             format=default
   hang                               format=hang
   isu                                format=hang
   center                             justification=centering
   centerlast                         justification=centerlast
   anne                               justification=centerlast
   nooneline                          singlelinecheck=off
   scriptsize                         font=scriptsize
   footnotesize                       font=footnotesize
   small                              font=small
   normalsize                         font=normalsize
   large                              font=large
   Large                              font=Large
   up                                 labelfont=up
   it                                 labelfont=it
   sl                                 labelfont=sl
   sc                                 labelfont=sc
   md                                 labelfont=md
   bf                                 labelfont=bf
   rm                                 labelfont=rm
   sf                                 labelfont=sf
   tt                                 labelfont=tt
   \setlength{\captionmargin}         margin=⟨Rand⟩
   \renewcommand{\captionfont}        \DeclareCaptionFont

                                      + \captionsetup{font=⟨Name⟩}

   \renewcommand{\captionsize}        \DeclareCaptionFont

                                      + \captionsetup{font=⟨Name⟩}

   \renewcommand{\captionlabelfont}   \DeclareCaptionLabelFont

                                      + \captionsetup{labelfont=⟨Name⟩}

8.2 caption2 Version 2.x

Die Pakete caption und caption2 sind vom internen Konzept her zu unterschiedlich, um hier eine Kompatibilität gewährleisten zu können. Daher liegt diesem Paket weiterhin ein caption2.sty bei, so daß ältere Dokumente, die caption2.sty verwenden, weiterhin übersetzt werden können. Neue Dokumente sollten jedoch auf dem aktuellen caption-Paket aufgesetzt werden, wie es in diesem Dokument beschrieben ist.

9 Weiterführende Dokumente

Folgende Dokumente möchte ich an dieser Stelle jedem ans Herz legen:

• Die DANTE-FAQ:

         http://www.dante.de/faq/de-tex-faq/

• ”Gleitobjekte – die richtige Schmierung“ von Axel Reichert erläutert den

Umgang mit gleitenden Umgebungen und ist hier im Netz zu finden:

         ftp://ftp.dante.de/pub/tex/info/german/gleitobjekte/

• epslatex von Keith Reckdahl enthält viele nützliche Tips im Zusammenhang

mit der Einbindung von Graphiken in L^{A}TEX 2ε. Das Dokument ist unter

         ftp://ftp.dante.de/pub/tex/info/
     als epslatex.ps bzw. epslatex.pdf zu finden.

10 Danksagungen

Von ganzem Herzen danke ich Katja Melzner, Steven D. Cochran, Frank Mittelbach, David Carlisle und Ivor Tiefenbrun.

Literatur

[1] Frank Mittelbach and Michel Goossens: The L^{A}TEX Companion (2nd. Ed.), Addison-Wesley, 2004.

[2] Anselm Lingnau: An Improved Environment for Floats, 2001/11/08

[3] Carsten Heinz: The Listings Package, 2004/02/13

[4] David Carlisle: The longtable package, 2000/10/22

[5] Sebastian Rahtz and Leonor Barroca: A style option for rotated objects in L^{A}TEX, 1997/09/26

[6] Rolf Niepraschk und Hubert Gäßlein: The sidecap package, 2003/06/06

[7] Steven D. Cochran: The subfig package, 2003/12/01

[8] Johannes Braams und Theo Jurriens: The supertabular environment, 2002/07/19