以下是我的問題的一個最小示例:
\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 檢視器(Linux 上的 Evince 應用程式)知道並顯示在側邊窗格中。此側窗格的層次結構錯誤:
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}