Was \section wirklich tut, ist nicht, Text größer zu setzen. Es deklariert eine einzige ganze Zahl: die Ebene der Überschrift. LaTeX kennt sieben Gliederungsebenen, von \part bis \subparagraph, nummeriert von −1 bis 5. Die beiden Fragen, die daraus folgen – soll diese Überschrift eine Nummer bekommen (secnumdepth), soll sie im Inhaltsverzeichnis stehen (tocdepth) –, sind nichts weiter als Vergleiche mit dieser Zahl. Wer die Hierarchie festlegt, hat Nummerierung und Verzeichnis also fast schon festgelegt. Diese Seite geht die sieben Ebenen durch, die Sternformen, den Grund, warum \tableofcontents einen zweiten Lauf verlangt, und wie \appendix und die drei Teile eines book die Nummerierung darunter umstellen.
Die sieben Gliederungsebenen und ihre level-Zahlen
Von oben nach unten sind es \part, \chapter, \section, \subsection, \subsubsection, \paragraph und \subparagraph. Die „level-Zahl“ ist keine Metapher. Im Quelltext der Standardklassen steht \section als \@startsection{section}{1}{…} – das zweite Argument, 1, ist die Ebene. \subsection erhält 2, \subsubsection 3, \paragraph 4, \subparagraph 5. Der Kernel-Code, der über das Setzen einer Nummer entscheidet, ist die eine Zeile \ifnum #2>\c@secnumdepth, und #2 ist genau diese Ziffer. Eine Überschrift ist keine Dekoration für fetten Text, sondern ein Wegweiser für den Standort im Gedankengang – und zugleich eine Deklaration, die das Nummernsystem des gesamten Dokuments festlegt.
| Befehl | Level | Einheit | Verfügbar in |
|---|---|---|---|
\part | −1 (book/report), 0 (article) | Teil | Alle Klassen |
\chapter | 0 | Kapitel | nur book / report |
\section | 1 | Abschnitt | Alle Klassen |
\subsection | 2 | Unterabschnitt | Alle Klassen |
\subsubsection | 3 | Unterunterabschnitt | Alle Klassen (in book/report standardmäßig ohne Nummer) |
\paragraph | 4 | Eingezogene Überschrift (Text läuft in derselben Zeile weiter) | Alle Klassen (standardmäßig ohne Nummer) |
\subparagraph | 5 | Eingezogene Unterüberschrift (Text läuft in derselben Zeile weiter) | Alle Klassen (standardmäßig ohne Nummer) |
Die beiden untersten Zeilen verhalten sich anders, weil das gesamte Erscheinungsbild in ein einziges Vorzeichen gefaltet ist. Das fünfte Argument von \@startsection gibt an, wie viel Raum nach der Überschrift bleibt: bei \section ist es 2.3ex, also positiv; bei \paragraph und \subparagraph ist es -1em, also negativ. Der Kernel liest dieses Vorzeichen – positiv heißt Zeilenumbruch nach der Überschrift, negativ heißt kein Umbruch, sondern ein waagerechter Abstand dieser Größe, und der Text läuft weiter. \paragraph{Kernpunkt} ergibt daher „Kernpunkt hier läuft der Text weiter“: eine eingezogene Überschrift, die in den Fließtext übergeht. Das ist das Mittel für eine kurze Marke am Absatzanfang; wer eine Überschrift auf eigener Zeile will, hört bei \subsubsection auf.
\documentclass{report} % \chapter is available here
\begin{document}
\chapter{Introduction}
\section{Background}
\subsection{Related work}
\paragraph{Key point}The body text continues on this same line.
\end{document}Warum es \chapter nur in book und report gibt
Die Klasse article kennt kein \chapter. Der Befehl ist schlicht nicht definiert; im Text eines article bricht der Lauf mit ! Undefined control sequence. ab. Es fehlt kein Paket – die Klasse wurde ohne die Einheit Kapitel entworfen. Die oberste Überschrift in einem article ist deshalb normalerweise \section; wer Kapitel braucht, wechselt zu report (Kapitel plus Zusammenfassung) oder book (Kapitel, standardmäßig zweiseitig, mit Vor- und Nachspann). \part gibt es in jeder Klasse, aber nicht im selben Rang: level 0 in article, level −1 – oberhalb von \chapter – in book und report.
Wer eine Ebene überspringt, sieht es an der Nummer. In report liefert ein \subsection direkt nach einem \chapter die Nummer 1.0.1. Die 0 in der Mitte ist der Abschnittszähler, der nie erhöht wurde. LaTeX schließt die Lücke nicht stillschweigend, sondern druckt den Wert der übersprungenen Ebene. Ebenso beginnt ein \section in report oder book ohne vorheriges \chapter bei 0.1. Taucht in einer Überschriftsnummer eine ungewohnte 0 auf, ist eine übersprungene Ebene der erste Verdacht.
Nummern entfernen: Sternformen und secnumdepth
Wie tief im ganzen Dokument nummeriert wird, entscheidet ein einziger Zähler: secnumdepth. Sein Wert ist die level-Zahl der tiefsten Einheit, die noch eine Nummer erhält; in den Standardklassen von TeX Live 2024 beträgt er 3 in article und 2 in book und report. Deshalb nummeriert article bis zu Unterunterabschnitten (level 3), während book bei Unterabschnitten (level 2) aufhört. Sollen in einem book auch Unterunterabschnitte Nummern bekommen, gehört \setcounter{secnumdepth}{3} in die Präambel. Umgekehrt entfernt \setcounter{secnumdepth}{0} die Nummern ab Abschnittsebene abwärts, und -2 nimmt sie allen Überschriften.
Soll nur an einer Stelle die Nummer verschwinden, hilft die Sternform. \section*{Danksagung} erzeugt eine Überschrift ohne Nummer, die außerdem nie ins Inhaltsverzeichnis gelangt. Beides hängt zusammen, weil das Kernel-Makro hinter der Sternform den Verzeichniseintrag gar nicht erst schreibt. Für Überschriften, bei denen eine Nummer merkwürdig wirkt – „Einleitung“, „Danksagung“, „Fazit“ –, ist genau das erwünscht; wird der Eintrag doch gebraucht, folgt direkt hinter der Überschrift \addcontentsline{toc}{section}{Danksagung}. Eine Sternüberschrift lässt zudem den Zähler unberührt, die folgenden Nummern verschieben sich also nicht.
Ebenso wichtig ist das optionale Argument. \section[Kurztitel]{Der lange Titel im Text} setzt die lange Form in die Überschrift und die eingeklammerte kurze Form in Inhaltsverzeichnis und Kolumnentitel. Abschnittstitel in Fachtexten passen selten in eine Zeile; dies ist der praktische Ausweg, der Verzeichnis und Kolumnentitel lesbar hält. Ohne Klammern wird der lange Titel an allen drei Stellen verwendet.
\setcounter{secnumdepth}{3} % number subsubsections too
\section{Results and discussion} % numbered, e.g. "3 Results and discussion"
\section*{Acknowledgements} % no number, and no TOC entry
\addcontentsline{toc}{section}{Acknowledgements} % put it back in the TOC
\section[Method]{A detailed formulation of the proposed method}Warum \tableofcontents einen zweiten Lauf braucht
Ein Inhaltsverzeichnis erscheint, sobald \tableofcontents im Text steht – aber nicht in dem Lauf, in dem es geschrieben wird. TeX liest das Dokument einmal von vorn nach hinten; in dem Moment, in dem es das Verzeichnis setzt, weiß es nichts von den Überschriften, die noch kommen. LaTeX schreibt deshalb bei jeder Überschrift eine Zeile wie \contentsline{section}{\numberline {1}First}{1}{} in die Hilfsdatei .toc und liest sie im nächsten Lauf am Anfang wieder ein. Daher das Minimum von zwei Läufen. Unangenehm ist, dass der erste Lauf im Protokoll nur No file document.toc. vermerkt – eine echte Warnung fehlt. So gelangen leere oder veraltete Inhaltsverzeichnisse in abgegebene Dokumente. Ein Build-Werkzeug wie latexmk wiederholt die Läufe selbsttätig und beseitigt das Problem strukturell.
Abbildungs- und Tabellenverzeichnisse funktionieren genauso: \listoffigures läuft über .lof, \listoftables über .lot, und beide brauchen ebenfalls mehr als einen Lauf. Einen Eintrag, der nicht automatisch erscheint, fügt \addcontentsline{ext}{unit}{text} hinzu: Das erste Argument ext ist die Zielerweiterung (toc, lof, lot), unit die Art des Eintrags (section, chapter, figure, …) und text die einzutragende Zeichenfolge. Für Material, das gar kein Eintrag ist – etwa Zusatzabstand zwischen Überschriftengruppen –, dient \addtocontents{ext}{text}; es schreibt seinen Inhalt unverändert in die Hilfsdatei, weshalb Befehle wie \vspace ein vorangestelltes \protect brauchen.
\tableofcontents
\setcounter{tocdepth}{2} % list down to subsections
\section*{Introduction} % starred: never listed
\addcontentsline{toc}{section}{Introduction} % list it by hand
\listoffigures % goes through the .lof file
\addtocontents{lof}{\protect\vspace{2ex}} % extra space inside that listtocdepth gegenüber secnumdepth
Wie tief das Verzeichnis reicht, entscheidet tocdepth. Der Wert bedeutet dieselbe level-Zahl wie bei secnumdepth, und die Vorgaben stimmen ebenfalls überein – 3 in article, 2 in book und report –, doch beide sind unabhängig: Eine Nummerierung, die bei Abschnitten endet, während das Verzeichnis Unterabschnitte auflistet, ist völlig üblich. Der entscheidende Unterschied liegt im Zeitpunkt. secnumdepth entscheidet an Ort und Stelle, ob eine Nummer gesetzt wird. tocdepth nicht: LaTeX schreibt jede Überschrift unabhängig von der Tiefe in die .toc-Datei, und tocdepth siebt diese Zeilen erst beim Zurücklesen. Man kann es nachsehen – die \paragraph-Zeile steht in der .toc eines voreingestellten article; sie wird nur nicht gedruckt. Das hat einen praktischen Vorteil: Ein größeres tocdepth verlangt nie eine neue .toc, ein zusätzlicher Lauf genügt.
\appendix und die drei Teile eines book
\appendix wird genau einmal geschrieben, an der Stelle, wo die Anhänge beginnen. Es ist kein Überschriftenbefehl, sondern ein Schalter für die Nummerierung. In article setzt er die Zähler für Abschnitt und Unterabschnitt zurück und definiert \thesection auf Buchstaben um. In book und report setzt er Kapitel- und Abschnittszähler zurück, macht \thechapter zu Buchstaben und ersetzt das Wort vor einer Kapitelüberschrift von Chapter durch Appendix. Nach \appendix schreibt man also weiterhin \chapter{Notation} und erhält „Appendix A Notation“. Zweimal gesetzt oder vor jede Anhangsüberschrift geschrieben, setzt er die Zähler jedes Mal zurück – deshalb nur einmal.
Die Klasse book ergänzt Befehle, die ein Buch in drei Teile gliedern. \frontmatter eröffnet den Vorspann (Vorwort, Inhaltsverzeichnis): Seitenzahlen werden auf kleine römische Ziffern umgestellt und bei 1 neu begonnen, Kapitel bleiben unnummeriert, ihre Titel stehen aber weiterhin im Inhaltsverzeichnis. \mainmatter beginnt den Hauptteil, stellt arabische Seitenzahlen wieder her, beginnt erneut bei 1 und aktiviert die Kapitelnummern. \backmatter markiert den Nachspann (Literaturverzeichnis, Register): Die Seitenzählung läuft weiter, nur die Kapitelnummern entfallen wieder. Diese Asymmetrie ist das Merkenswerte – nur \frontmatter und \mainmatter setzen den Seitenzähler zurück.
\documentclass{book}
\begin{document}
\frontmatter % i, ii, ... and unnumbered chapters
\tableofcontents
\mainmatter % 1, 2, ... and numbered chapters again
\chapter{Introduction}
\appendix % chapters now read "Appendix A", "Appendix B"
\chapter{Notation}
\backmatter % bibliography, index: page numbers keep running
\end{document}Entworfen hat diesen ganzen Satz von Gliederungsbefehlen Leslie Lamport. Den ACM Turing Award erhielt er 2013 allerdings nicht für LaTeX, sondern für seine Arbeiten zu verteilten Systemen: logische Uhren, Sicherheit und Lebendigkeit, replizierte Zustandsmaschinen. Das, was Studierende weltweit täglich tippen – \section –, kommt in der Begründung mit keinem Wort vor.
Wenn Nummerierung oder Verzeichnis nicht stimmen
- Eine
0in der Nummer (1.0.1und Ähnliches) — eine Ebene wurde übersprungen. Zu prüfen ist ein\subsectiondirekt nach einem\chapterinreport/bookoder ein\sectionvor dem ersten\chapter. - Das Verzeichnis ist leer oder veraltet — die sichtbare
.tocstammt vom vorigen Lauf. Zweimal kompilieren. Eine Warnung gibt es nicht, deshalb istlatexmkdie verlässliche Antwort. ! Undefined control sequence.bei\chapter— das Dokument ist einarticle. Aufreportoderbookwechseln oder\sectionals oberste Ebene verwenden.- Eine Sternüberschrift fehlt im Verzeichnis — das ist beabsichtigt. Direkt hinter die Überschrift gehört
\addcontentsline{toc}{section}{…}. - Unterabschnitte fehlen im Verzeichnis —
tocdepthist schlicht zu flach.\setcounter{tocdepth}{2}setzen und einmal mehr kompilieren; die.tocmuss nicht neu erzeugt werden. - Die Anhangsnummerierung stimmt nicht —
\appendixist ein Schalter, keine Überschrift. Einmal setzen, direkt vor der ersten Anhangsüberschrift.