Der Befehl \caption, der Abbildungen oder Tabellen beschriftet, wirkt unscheinbar, steht aber im Zentrum von Nummerierung, Querverweisen und Abbildungs- bzw. Tabellenverzeichnissen. Diese Seite klärt zuerst die Grundlagen von \caption: dass der Befehl nur in einem Float funktioniert, automatisch nummeriert, wie man einen kurzen Eintrag vergibt und wo \label stehen muss. Danach geht es zum caption-Paket für detaillierte Gestaltung und zum subcaption-Paket, mit dem eine Abbildung in (a), (b) usw. aufgeteilt wird.
Grundlagen von \caption
\caption{…} fügt einer Abbildung oder Tabelle erklärenden Text, also eine Beschriftung, hinzu. Die zentrale Einschränkung lautet: Der Befehl funktioniert nur innerhalb eines Floats, also in einer figure- oder table-Umgebung. Im normalen Fließtext ist er ein Fehler. Innerhalb eines Floats nummeriert LaTeX automatisch nach Typ – „Figure 1“, „Table 3“ – und setzt diese Nummer zusammen mit dem Beschriftungstext in einem festen Format. Die Nummer schreiben Sie nie selbst.
Hier ist eine minimale Abbildung. \centering zentriert die Grafik, \includegraphics bindet das Bild ein, und \caption steht darunter.
\begin{figure}
\centering
\includegraphics[width=0.6\textwidth]{plot}
\caption{測定値と理論曲線の比較。}
\label{fig:plot}
\end{figure}Wenn eine Beschriftung lang ist und im Abbildungs- oder Tabellenverzeichnis nur eine kurze Zeile stehen soll, verwenden Sie das optionale Argument in eckigen Klammern: \caption[kurzer Titel]{voller Text}. Der Inhalt der Klammern geht ins Verzeichnis, der Inhalt der geschweiften Klammern steht bei der Abbildung. Ohne eckige Klammern wird der volle Text auch im Verzeichnis verwendet.
\caption[測定値と理論曲線]{測定値(点)と理論曲線(実線)の比較。誤差棒は標準偏差を表す。}Für Querverweise gibt es bei \label eine leicht zu übersehende Regel: \label immer nach \caption setzen. LaTeX aktualisiert die „aktuelle Nummer“ erst beim Verarbeiten von \caption auf die Abbildungsnummer. Steht \label davor, nimmt es den vorherigen Zähler auf, etwa eine Abschnittsnummer, und \ref liefert dann den falschen Wert. Setzen Sie \label direkt nach \caption – in derselben oder in der nächsten Zeile – und \ref{fig:plot} ergibt korrekt „1“.
Zur Konvention: Die Beschriftung einer Abbildung steht meist unter der Abbildung, die einer Tabelle über der Tabelle. LaTeX setzt \caption genau dort, wo Sie es schreiben; für eine Beschriftung oben setzen Sie den Befehl also vor die Grafik bzw. Tabelle, für eine unten danach. Das Format selbst – Abstand zwischen Nummer und Text usw. – ändert sich durch die Position nicht. Zeitschriften geben die Platzierung oft vor, prüfen Sie daher zuerst die Vorgaben.
Gestaltung mit dem caption-Paket
Wenn Sie das Aussehen von Beschriftungen ändern möchten – Schrift, Trennzeichen zwischen Nummer und Text, Ausrichtung –, verwenden Sie das caption-Paket von Axel Sommerfeldt. Laden Sie es in der Präambel mit \usepackage{caption} und setzen Sie Optionen mit \captionsetup{Schlüssel=Wert, …}. Die wichtigsten Schlüssel sind:
| Schlüssel | Häufige Werte | Wirkung |
|---|---|---|
format | plain / hang | Satz des Textkörpers; hang rückt Folgezeilen um die Labelbreite ein |
labelsep | colon / period / space / quad | Trenner zwischen Label und Text; colon ergibt „: “, period „. “ |
font | small / bf / it … | Schrift und Größe der gesamten Beschriftung |
labelfont | bf / sc … | Schrift nur des Label-Teils „Figure 1“ |
justification | centering / raggedright / justified | Ausrichtung: zentriert, linksbündig mit Flattersatz rechts oder Blocksatz |
width | eine Länge (z. B. 0.8\textwidth) | Begrenzt die Umbruchbreite der Beschriftung |
singlelinecheck | true / false | Ob kurze einzeilige Beschriftungen automatisch zentriert werden |
Zum Beispiel wird „fettes Label, Punkt als Trenner, insgesamt kleinere Schrift“ einmal in der Präambel so eingestellt. Ein \captionsetup in der Präambel gilt für das ganze Dokument; innerhalb eines Floats geschrieben, gilt es nur für diese eine Beschriftung.
\usepackage{caption}
\captionsetup{labelfont=bf, labelsep=period, font=small, justification=raggedright}Wenn Abbildungen und Tabellen verschieden gestaltet werden sollen, geben Sie den Float-Typ in eckigen Klammern an: \captionsetup[figure]{…} und \captionsetup[table]{…}. Beachten Sie, dass singlelinecheck standardmäßig aktiv ist und jede einzeilige Beschriftung zentriert, unabhängig von Ihrer justification. Mit singlelinecheck=false bleiben solche Beschriftungen linksbündig.
Das caption-Paket ergänzt einen weiteren nützlichen Befehl, \captionof{Typ}{Text}. Damit können Sie etwas außerhalb eines Floats beschriften: In einer minipage- oder center-Umgebung, wo normales \caption nicht funktioniert, nummeriert und referenziert \captionof{figure}{…} das Objekt korrekt als „Figure“. Das ist nützlich, wenn Abbildung und Beschriftung an einer festen Textstelle bleiben sollen, statt dem Float-Mechanismus zu folgen.
\begin{center}
\includegraphics[width=0.5\textwidth]{diagram}
\captionof{figure}{フロートに入れずに置いた図。}
\label{fig:inline}
\end{center}Eine Abbildung mit subcaption aufteilen
Oft sollen mehrere kleine Abbildungen innerhalb einer Abbildung nebeneinander stehen, jeweils mit eigenem Unterlabel (a), (b), (c). Der heutige Standard dafür ist das ebenfalls von Sommerfeldt geschriebene subcaption-Paket. \usepackage{subcaption} genügt; intern lädt es automatisch das caption-Paket.
Das zentrale Werkzeug ist die subfigure-Umgebung (subtable für Tabellen). Sie erhält ein obligatorisches Breitenargument – \begin{subfigure}[pos]{Breite} –, während optionale Angaben wie [b] die vertikale Ausrichtung festlegen. Im Grunde ist sie eine minipage dieser Breite, die ein \includegraphics und ein \caption enthält. Ein \caption innerhalb einer subfigure wird zum (a)/(b)-Unterlabel, während das \caption außerhalb der subfigure-Umgebungen die Abbildung als Ganzes nummeriert.
Hier ist ein vollständiges Beispiel mit zwei Subfigures nebeneinander. Jede subfigure ist 0.45\textwidth breit; ein \hfill dazwischen schiebt sie an die beiden Seiten.
\usepackage{graphicx}
\usepackage{subcaption}
\begin{figure}
\centering
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{before}
\caption{処理前}
\label{fig:before}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{after}
\caption{処理後}
\label{fig:after}
\end{subfigure}
\caption{画像処理の前後比較。}
\label{fig:compare}
\end{figure}In diesem Beispiel wird die gesamte Abbildung zu „Figure 1“, und die beiden Teilabbildungen erscheinen als „(a) Before“ und „(b) After“. Im Text liefert \ref{fig:before} „1a“ und \ref{fig:compare} „1“. Wenn Sie nur das Unterlabel – etwa „(a)“ – referenzieren möchten, schreiben Sie \subref{fig:before} für ein bloßes „a“ oder \subref*{fig:before} für „(a)“.
Neben der subfigure-Umgebung gibt es den einzeiligen Befehl \subcaptionbox. Die Form lautet \subcaptionbox[Verzeichniseintrag]{Überschrift}[Breite][Innenposition]{Inhalt}; dabei steht das \label im Überschriftenargument (zum Beispiel \subcaptionbox{Before\label{fig:before}}{\includegraphics{…}}). So sparen Sie sich eine mehrzeilige minipage; das passt gut für einfache Teilabbildungen mit nur einem Bild.
Veraltete Pakete vermeiden (subfig, subfigure)
Pakete für Teilabbildungen gibt es historisch in drei Generationen, und sie werden leicht verwechselt. Das älteste Paket, subfigure, ist obsolet und verwendet den alten Befehl \subfigure. Sein Nachfolger subfig (mit \subfloat) wird ebenfalls nicht mehr aktiv gepflegt. Für neue Dokumente wird das hier beschriebene subcaption-Paket empfohlen.
Wichtig ist: Diese Pakete können nicht gemeinsam geladen werden. Wenn subcaption und subfig oder das alte subfigure zugleich in der \usepackage-Liste stehen, kollidieren ihre internen Definitionen und erzeugen viele Fehler. Eine Zeitschriftenvorlage kann bereits ein älteres Paket laden; prüfen Sie daher, was die Vorlage lädt, bevor Sie selbst ein anderes hinzufügen.
- subcaption — heutiger Standard; die Umgebungen
subfigure/subtablesowie\subcaptionboxund\subref. In das caption-Paket integriert; hier empfohlen. - subfig — die vorherige Generation mit
\subfloat. Die Pflege ist ins Stocken geraten; für neue Arbeiten nicht empfohlen. - subfigure — die älteste Variante mit
\subfigure. Obsolet; nicht verwenden.