\tableofcontents, \listoffigures und \listoftables sammeln Überschriften- und Beschriftungsinformationen und erzeugen Inhalts-, Abbildungs- und Tabellenverzeichnis. Diese Seite erklärt die Technik dahinter (Hilfsdateien und zwei Läufe), die Tiefensteuerung, das manuelle Eintragen von Sternüberschriften und die Gestaltung von Einzügen, Schriften und Punktführungen mit tocloft. Die Überschriften selbst behandelt „Structure, headings & ToC“; hier geht es um Erzeugen und Anpassen der Listen.
Drei automatisch erzeugte Listen
Ein Inhaltsverzeichnis entsteht einfach durch \tableofcontents. Genauso erzeugt \listoffigures ein Abbildungsverzeichnis aus figure-Beschriftungen und \listoftables ein Tabellenverzeichnis aus table-Beschriftungen. Normalerweise stehen sie im Vorspann direkt nach dem Titel.
Alle drei funktionieren gleich. Während der Verarbeitung schreibt LaTeX Nummer, Titel und Seite jeder Überschrift oder Beschriftung in eine Hilfsdatei: .toc für das Inhaltsverzeichnis, .lof für Abbildungen und .lot für Tabellen, jeweils mit dem Namen der Hauptdatei. Beim nächsten Lauf liest es die Hilfsdatei wieder ein und setzt die Liste.
Daraus folgt etwas Wichtiges. Beim ersten Lauf existiert die Hilfsdatei noch nicht oder ist veraltet, daher ist die Liste leer oder falsch. Für ein korrektes Ergebnis musst du mindestens zweimal kompilieren; die Referenz sagt selbst: einmal zum Speichern der Information und ein zweites Mal zum Abrufen. Verschobene Seitenzahlen können weitere Läufe erzwingen, und Werkzeuge wie latexmk wiederholen automatisch bis zur Stabilität.
Die Überschriftentexte stammen aus sprachabhängigen Makros: \contentsname (Standard „Contents“) für das Inhaltsverzeichnis, \listfigurename für Abbildungen und \listtablename für Tabellen; alle lassen sich mit \renewcommand ändern. In book und report werden diese Überschriften als unnummerierte Kapitel gesetzt, in article als unnummerierte Abschnitte. Da sie keine Nummer tragen, erscheinen die Listen selbst standardmäßig nicht im Inhaltsverzeichnis.
\documentclass{report}
\begin{document}
\tableofcontents % .toc を使う(2 回処理が必要)
\listoffigures % .lof
\listoftables % .lot
\chapter{序論}
\end{document}Tiefe des Inhaltsverzeichnisses — tocdepth
Welche Überschriftsebenen ins Inhaltsverzeichnis gelangen, bestimmt der Zähler tocdepth. Sein Wert ist die Ebenennummer einer Überschrift (\section ist 1, \subsection ist 2, \chapter in book/report ist 0, …) und benennt die tiefste aufzuführende Ebene. \setcounter{tocdepth}{1} endet also bei Abschnitten und lässt Unterabschnitte weg; \setcounter{tocdepth}{2} reicht bis zu Unterabschnitten. Die Vorgaben sind 3 in article und 2 in book/report.
Verwechseln Sie ihn nicht mit secnumdepth, der die Nummerierung steuert. secnumdepth legt fest, wie tief Überschriften nummeriert werden; tocdepth legt fest, wie tief sie im Inhaltsverzeichnis erscheinen. Beides ist unabhängig. Sie können etwa bis zu Unterabschnitten nummerieren, aber nur bis zu Abschnitten listen. Abbildungs- und Tabellenverzeichnis haben nur eine Ebene (Abbildung, Tabelle), daher beeinflusst tocdepth sie nicht.
Einträge von Hand hinzufügen — addcontentsline und addtocontents
Eine Sternüberschrift (\section* oder \chapter*) trägt keine Nummer und keinen Seitenverweis und gelangt daher nicht von selbst ins Inhaltsverzeichnis. Wenn „Einleitung“, „Danksagung“, Literaturverzeichnis oder Index dort erscheinen sollen, schreiben Sie mit \addcontentsline{ext}{unit}{text} eine manuelle Zeile. Alle drei Argumente sind erforderlich.
ext— die Erweiterung der Ziel-Hilfsdatei:tocfür das Inhaltsverzeichnis,loffür Abbildungen,lotfür Tabellen.unit— die Art des Eintrags. Fürtocetwapart,chapter,section,subsectionusw. (deren Format und Einzug verwendet werden); fürloffigure; fürlottable.text— der anzuzeigende Text. Ein vorangestelltes\protect\numberline{}richtet ihn wie nummerierte Einträge aus; zerbrechliche Befehle darin benötigen\protect.
Die Platzierung ist wichtig: \addcontentsline speichert die Seitenzahl, die beim Erreichen dieser Zeile aktuell ist. Setzen Sie es daher direkt nach den Überschriftenbefehl. Das Standardmuster für eine Sternüberschrift steht unten. Die Seitenzahl liefert LaTeX automatisch; sie gehört nicht in text.
\section*{はじめに}
\addcontentsline{toc}{section}{はじめに}
\chapter*{謝辞}
\addcontentsline{toc}{chapter}{謝辞}Der Begleiter \addtocontents{ext}{text} fügt keine Zeile, sondern Material in die Hilfsdatei ein, etwa Abstände oder Formatierungsbefehle. Er nimmt zwei Argumente: die Zielerweiterung ext und den zu schreibenden Inhalt text. Um zum Beispiel vertikalen Abstand im Abbildungsverzeichnis einzufügen, schreiben Sie Folgendes. Da die .lof beim nächsten Lauf wieder eingelesen wird, braucht ein zerbrechlicher Befehl wie \vspace ein \protect. Kurz: Zeilen mit Seitenzahl laufen über \addcontentsline; Abstände und Dekoration über \addtocontents.
\addtocontents{lof}{\protect\vspace{2ex}} % 図目次に縦の空きを差し込む
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}} % ここ以降の目次の深さを変えるListen mit tocloft umformen
Wenn Sie das Aussehen der Standardlisten fein steuern wollen, ist tocloft (von Peter Wilson) das übliche Paket. Laden Sie es mit \usepackage{tocloft} und stellen Sie Einzug, Nummernbreite, Schrift und Punktführer jeder Ebene einzeln über \renewcommand und spezielle Befehle ein. Die Befehlsnamen sind systematisch: Sie kombinieren ein Präfix für die Listenebene (toc = \part, chap = \chapter, sec = \section, subsec = \subsection, …, fig für Abbildungen, tab für Tabellen) mit einer Rolle.
Einzug und Nummernbreite setzen Sie gemeinsam mit \cftsetindents{entry}{indent}{numwidth}: Das erste Argument ist das Ziel (section, …), indent der Einzug vom linken Rand und numwidth die für die Nummer reservierte Breite. Sie können auch die einzelnen Längenregister \cftsecindent und \cftsecnumwidth direkt mit \setlength ändern. Wenn breitere Nummern mit dem Titel kollidieren, vergrößern Sie numwidth.
Die Schriften sind für Eintrag und Seitenzahl getrennt: \renewcommand{\cftsecfont}{...} legt die Schrift des Titels eines Abschnittseintrags fest, \cftsecpagefont die seiner Seitenzahl (bei Kapiteln \cftchapfont und \cftchappagefont). Die Schrift der Listenüberschrift selbst ändern Befehle wie \cftloftitlefont für das Abbildungsverzeichnis.
Der Punktführer, also die Punktreihe zwischen Titel und Seitenzahl, wird von \cftsecleader gesteuert. Die Punktdichte ist die Länge \cftdotsep (Vorgabe 4.5): kleinere Werte setzen die Punkte dichter, größere weiter auseinander. Um den Führer ganz zu entfernen, verwenden Sie \renewcommand{\cftsecleader}{\cftdotfill{\cftnodots}} (\cftnodots ist ein ausreichend großer Wert für „keine Punkte drucken“). Das Punktzeichen selbst legt \cftdot fest, standardmäßig ein Punkt.
| Befehl | Steuert | |
|---|---|---|
\cftsetindents | Setzt Einzug und Nummernbreite einer Ebene gemeinsam | {entry}{indent}{numwidth} |
\cftsecfont | Schrift des Titels eines Abschnittseintrags | Mit \renewcommand neu definieren |
\cftsecpagefont | Schrift der Seitenzahl eines Abschnittseintrags | Mit \renewcommand neu definieren |
\cftsecleader | Punktführer eines Abschnittseintrags | z. B. \cftdotfill{\cftdotsep} |
\cftdotsep | Abstand der Führungspunkte (Vorgabe 4.5; kleiner = dichter) | Eine Länge (in mu) |
\cftnodots | Großer Wert, der keine Punkte druckt | Zum Entfernen eines Führers verwenden |
Das folgende Beispiel setzt Abschnittstitel fett und verdichtet den Punktführer etwas. Schreiben Sie es in die Präambel.
\usepackage{tocloft}
\renewcommand{\cftsecfont}{\bfseries} % 節の題を太字に
\renewcommand{\cftsecpagefont}{\bfseries} % ページ番号も太字に
\renewcommand{\cftsecleader}{\bfseries\cftdotfill{\cftdotsep}} % 太字の点線リーダー
\renewcommand{\cftdotsep}{2} % 点をやや密に
\cftsetindents{section}{1.5em}{2.5em} % 字下げと番号幅Listen ins Inhaltsverzeichnis aufnehmen
Wie erwähnt, sind die Überschriften von \listoffigures, \listoftables sowie Literaturverzeichnis und Index unnummeriert und erscheinen daher standardmäßig nicht im Inhaltsverzeichnis. Es gibt zwei Wege, sie aufzunehmen. Der schnelle Weg ist, direkt vor jeden Listenbefehl eine \addcontentsline-Zeile zu setzen. Beachten Sie, dass tocloft selbst diese automatische Einfügung nicht bereitstellt.
\cleardoublepage
\addcontentsline{toc}{chapter}{\listfigurename} % 図目次を目次に載せる
\listoffigures
\cleardoublepage
\addcontentsline{toc}{chapter}{\listtablename} % 表目次を目次に載せる
\listoftablesDer andere Weg ist das Paket tocbibind (ebenfalls von Peter Wilson). Mit \usepackage{tocbibind} fügt es vorhandenes Inhaltsverzeichnis, Abbildungsverzeichnis, Tabellenverzeichnis, Literaturverzeichnis und Index automatisch ins Inhaltsverzeichnis ein. Einzelne Einträge schalten Sie mit Optionen ab: nottoc (Inhaltsverzeichnis selbst ausschließen), notlot (Tabellenverzeichnis), notlof (Abbildungsverzeichnis), notbib (Literaturverzeichnis) und notindex (Index). Besonders bei mehrseitigen Literaturverzeichnissen oder Indizes ist das sicherer als handgesetztes \addcontentsline und erspart die manuellen Zeilen.
Feinere Kontrolle — titletoc und etoc
Wenn tocloft nicht mehr ausreicht, gibt es zwei naheliegende Optionen. titletoc (von Javier Bezos, Teil des Bundles mit titlesec) definiert die Formatierung jeder Inhaltsverzeichniszeile pro Ebene, einschließlich Material und Trennern vor und nach der Zeile. Es bietet starke Hooks, um Zeilen unabhängig zu formen, und passt gut zu Dokumenten, deren Überschriften mit titlesec gestaltet sind.
etoc (von Jean-François Burnol) geht noch weiter und lässt das Inhaltsverzeichnis über ein Gerüst aus „Zeilenstilen“ und „globalen Stilen“ vollständig neu gestalten. Besonders wichtig ist \localtableofcontents, das aus derselben .toc ein Teilinhaltsverzeichnis pro Kapitel setzt; sogar Baum- oder Mindmap-Darstellungen sind möglich. Sinnvoll ist die Reihenfolge: zuerst tocloft probieren, und erst zu titletoc oder etoc wechseln, wenn Sie die Struktur selbst umbauen wollen.