Das Folgende ist ein Minimalbeispiel meines Problems:
\documentclass{article}
\RequirePackage{hyperref}
\newenvironment{qu}[1][]{\par\addcontentsline{toc}{subsection}{ #1}}{\par}
\begin{document}
\tableofcontents
\addcontentsline{toc}{section}{a section}
\begin{qu}[foo]\end{qu}
\addcontentsline{toc}{section}{another section}
\begin{qu}[bar]\end{qu}
\end{document}
Das von Latex generierte Inhaltsverzeichnis sieht korrekt aus, ungefähr so:
Contents
a section
foo
another section
bar
Wenn ich dies (zweimal) mit pdflatex kompiliere, wird auch ein Inhaltsverzeichnis generiert, das mein PDF-Viewer (die Evince-Anwendung unter Linux) kennt und in einem Seitenbereich anzeigt. Dieser Seitenbereich hat die falsche hierarchische Struktur:
a section
1. foo
another section
2. bar
Warum passiert das und wie kann ich es beheben?
Antwort1
Das manuelle Hinzufügen einer Inhaltszeile mit einem Eintrag über der aktuellen Lesezeichenebene setzt die Lesezeichenebene nicht zurück, d. h. die section
Ebene im Inhaltsverzeichnis wird nicht zurück auf die Abschnittsebene der Lesezeichen verschoben.
Das bookmark
Paket kümmert sich darum, andernfalls ist eine hyperref
manuelle \phantomsection
Verwendung eine weitere, aber aus meiner Sicht schlechtere Lösung.
Ein weiterer Vorteil des bookmark
Pakets ist, dass die Gliederung (das Lesezeichenfenster) bereits nach einem Kompilierungslauf korrekt ist.
\documentclass{article}
\usepackage[open=true]{bookmark}
\newenvironment{qu}[1][]{\par\addcontentsline{toc}{subsection}{ #1}}{\par}
\begin{document}
\tableofcontents
\addcontentsline{toc}{section}{a section}
\begin{qu}[foo]
\end{qu}
\addcontentsline{toc}{section}{another section}
\begin{qu}[bar]\end{qu}
\end{document}