Bei einigen wissenschaftlichen Verlagen ist es üblich, zusätzlich zu einem sehr ausführlichen Inhaltsverzeichnis, das alle Gliederungsebenen zeigt eine kurze Gliederungsübersicht anzugeben, in der nur die Kapitel und Abschnitte aufgeführt werden. Die erste Idee zur Lösung dieses Problem, nämlich \tableofcontents
zweimal mit unterschiedlicher Einstellung für tocdepth
aufzurufen, scheitert, weil LaTeX am Ende von \tableofcontents
das Inhaltsverzeichnis neu zum Schreiben öffnet und der zweite Aufruf von \tableofcontents
auf eine leere Datei trifft.
Man benötigt zur Lösung dieses Problems also beispielsweise eine Anweisung, die wie \tableofcontents
arbeitet, aber auf das Öffnen der Datei mit dem Inhaltsverzeichnis zum Schreiben verzichtet. Mit einem kleinen Trick gelingt dies recht einfach: LaTeX verwendet intern den Schalter \if@filesw
, um zu ermitteln, ob Hilfsdateien geschrieben werden soll. Ist das nicht der Fall wird auch das Inhaltsverzeichnis nicht zum Schreiben geöffnet. Also kann man durch lokales setzen von \@fileswfalse
das gewünschte Verhalten erreichen:
\documentclass{book} \usepackage{blindtext} \newcommand*{\showtableofcontents}{% \begingroup \edef\EndGroup{\endgroup \noexpand\setcounter{tocdepth}{\the\value{tocdepth}}}% \csname @fileswfalse\endcsname \setcounter{tocdepth}{1}% \def\contentsname{Chapters and Sections}% \tableofcontents \EndGroup } \begin{document} \showtableofcontents \tableofcontents \blinddocument\blinddocument\blinddocument \end{document}
Unschön bei dieser Lösung ist, dass man peinlich darauf achten muss, dass \showtableofcontents
nur bis zum ersten Aufruf von \tableofcontents
in der gewünschten Weise funktioniert und danach dieselben Probleme hat, wie ein weiteres \tableofcontents
hätte.
Das experimentelle Pakete tocstyle, das seit einiger Zeit Alpha-Bestandteil von KOMA-Script ist, bietet eine allgemeinere Lösung. Dabei wird nicht die eine Verzeichnisdatei mehrfach gelesen, sondern LaTeX wird angewiesen, Kopien der toc-Datei anzulegen und mit diesen zu arbeiten. Damit spielt die Reihenfolge keine Rolle mehr:
\documentclass{book} \usepackage{blindtext} \usepackage{tocstyle} \newcommand*{\showtableofcontents}{% \begingroup \edef\EndGroup{\endgroup \noexpand\setcounter{tocdepth}{\the\value{tocdepth}}}% \csname @fileswfalse\endcsname \setcounter{tocdepth}{1}% \chapter*{Chapters and Sections}% \showtoc{toc}% \EndGroup } \begin{document} \showtableofcontents \tableofcontents \blinddocument\blinddocument\blinddocument \showtableofcontents% and one more chapters and sections at the end \end{document}
Die hier verwendete Anweisung \showtoc
erwartet als Argument die Dateierweiterung des zu zeigenden Verzeichnisses. Tatsächlich wird dann eine nummerierte Kopie dieser Datei angelegt und diese Kopie angezeigt. Man kann sie auf alle Dateien anwenden, die per \addtocontents
befüllt werden, also auch auf das Tabellen- oder das Abbildungsverzeichnis.
Die Anweisung \showtoc
ist bisher nicht dokumentiert. Die Anleitung zu tocstyle macht jedoch selbst reichen Gebrauch von dieser Anweisung. Es ist daher davon auszugehen, dass die Funktionalität – ggf. unter anderem Namen – auch zukünftig von tocstyle bereit gestellt wird.