为什么目录页中的某些链接指向错误的页面?

为什么目录页中的某些链接指向错误的页面?
\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 ...

相关内容