Ниже приведен минимальный пример моей проблемы:
\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}
Оглавление, сгенерированное latex, выглядит правильно, примерно так:
Contents
a section
foo
another section
bar
Когда я компилирую это (дважды) с помощью pdflatex, он также генерирует таблицу содержания, о которой знает мой просмотрщик pdf (приложение Evince на Linux), и отображает ее в боковой панели. Эта боковая панель имеет неправильную иерархическую структуру:
a section
1. foo
another section
2. bar
Почему это происходит и как это исправить?
решение1
Добавление строки содержимого вручную с некоторой записью выше текущего уровня закладки не сбрасывает уровень закладки, т.е. section
уровень в оглавлении не будет смещен обратно на уровень раздела закладок.
Пакет bookmark
позаботится об этом, в противном случае hyperref
ручное \phantomsection
использование является другим, но худшим решением, на мой взгляд.
Еще одним преимуществом bookmark
пакета является то, что структура (панель закладок) корректна уже после одного запуска компиляции.
\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}