\documentclass[a4paper,12pt]{book}
\usepackage[hidelinks]{hyperref}
\begin{document}
\tableofcontents
\newpage
\addcontentsline{toc}{section}{from there}
no text
\newpage
\addcontentsline{toc}{section}{to here}
some text
\newpage
\addcontentsline{toc}{subsection}{and here}
still more text
\newpage
\addcontentsline{toc}{subsection}{not here}
or maybe less text
\newpage
\addcontentsline{toc}{section}{also here}
and more text
\newpage
\addcontentsline{toc}{subsection}{maybe here}
and still more text
\end{document}
答案1
\addcontentsline
做不是创建锚点时,它会使用之前创建的锚点,即使该锚点属于先前的页面之一。这是设计使然,它允许,例如:
\section*{Introduction}
\addcontentsline{toc}{section}{Introduction}
如果\addcontentsline
创建一个锚点,那么它将指向以下章节标题。
这里的解决方案是使用\phantomsection
,它将创建所需的锚点:
\newpage
\phantomsection
\addcontentsline ...