Der Zähler `tocdepth` legt fest, bis zu welcher Gliederungsebene, die Einträge aus den Verzeichnisdateien auch im jeweiligen Verzeichnis ausgegeben werden sollen. Verzeichnisdateien sind Hilfsdateien, die am Ende eines LaTeX-Laufs aus den Informationen der `aux`-Datei erzeugt werden. Diese Informationen stammen letztlich aus expliziten oder impliziten `\addtocontents`-Befehlen. Bekannte Beispiele dafür sind:
- `*.toc`: Die Datei mit den Inhaltsverzeichniseinträgen.
- `*.lof`: Die Datei mit den Abbildungsverzeichniseinträgen.
- `*.lot`: Die Datei mit den Tabellenverzeichniseinträgen.
- `*.lst`: Die Datei mit den Listingsverzeichniseinträgen (siehe Paket [`listings`][1])
Der `tocdepth`-Wert -1 steht in der Regel für den Teil (`\part`), 0 für das Kapitel (`\chapter`), 1 für den Abschnitt (`\section`), 2 für den Unterabschnitt (`\subsection`), 3 für den Unterunterabschnitt (`\subsubsection`), 4 für die Spitzmarke (`\paragraph`) und 5 für die zweite Spitzmarke (`\subparagraph`). Die Werte sind jedoch nicht in LaTeX selbst, sondern in den Klassen festgelegt. Diese Zuordnung gilt daher nur für die Klassen, die sich dabei an den Standardklassen orientieren.
Wenn man die Gliederungstiefe im Inhaltsverzeichnis nur für bestimmte Teile des Dokuments ändern möchte, findet man im Internet häufig Vorschläge wie
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
Mit dieser Anweisung wird an der entsprechenden Stelle im Dokument die Anweisung
\setcounter{tocdepth}{0}
ins Inhaltsverzeichnis geschrieben. Damit wird also der LaTeX-Zähler `tocdepth` während des Einlesens der `toc`-Datei zum Erzeugen des Inhaltsverzeichnisses auf den Wert 0 gesetzt. Ab dieser Stelle des Inhaltsverzeichnisses werden also nur noch die Ebene *Teil* (`\part`) und *Kapitel* (`\chapter`) in Verzeichnissen ausgegeben.
Hat man jedoch nach dem Inhaltsverzeichnis beispielsweise noch ein Abbildungs- oder ein Tabellenverzeichnis, so bleiben diese Verzeichnisse leer. Der Grund ist einfach, dass Tabellen- und Abbildungseinträge in diesen Verzeichnissen in der Regel mit der Ebene 1 erzeugt werden. Da `tocdepth` aber 0 und damit kleiner ist, werden diese Einträge nicht mehr ausgegeben. Das Problem kann man auf verschiedene Weise lösen.
Zum einen kann man sich vor dem Inhaltsverzeichnis merken, welchen Wert `tocdepth` hat und diesen Wert danach wieder herstellen:
\begingroup
\edef\TiefeVorDemInhaltsverzeichnis{\the\value{tocdepth}}
\tableofcontents
\setcounter{tocdepth}{\TiefeVorDemInhaltsverzeichnis}
\endgroup
Die Gruppierung mit `\begingroup` und `\endgroup` dient hier lediglich dazu `\TiefeVordemInhaltsverzeichnis` lokal zu halten. Da `\setcounter` immer global wirkt, hat sie keine Auswirkung auf die Änderungen des Zählers `tocdepth`.
Desweiteren kann man statt `\setcounter` zu verwenden, den mit `tocdepth` korrespondierenden TeX-Zähler lokal zum Verzeichnis ändern, indem man die `\addtocontents`-Anweisung abändert:
\addtocontents{toc}{\protect\value{tocdepth}=0\relax}
Damit hat `tocdepth` dann nach dem Inhaltsverzeichnis wieder den Wert davor. Dabei wird die Tatsache ausgenutzt, dass LaTeX die Inhaltsverzeichnisdatei innerhalb einer Gruppe lädt.
Eine elegante Möglichkeit bietet das Paket [`tocvsec2`][2]. Statt direkt mit `\addtocontents` Anweisungen zur Manipulation des Zählers in die Datei zu schreiben, kann man dort mit der Anweisung `\settocdepth` die Einstellung für das Inhaltsverzeichnis entsprechend ändern und mit `\resettocdepth` wieder den ursprünglichen Wert herstellen. Dabei sind mehrere Schachtelungen möglich. Näheres ist der Anleitung zum Paket zu entnehmen.
[1]: http://www.ctan.org/pkg/listings
[2]: http://www.ctan.org/pkg/tocvsec2