![Hyperref - 目录中的链接指向正确页面之前的一页](https://linux22.com/image/294474/Hyperref%20-%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E9%93%BE%E6%8E%A5%E6%8C%87%E5%90%91%E6%AD%A3%E7%A1%AE%E9%A1%B5%E9%9D%A2%E4%B9%8B%E5%89%8D%E7%9A%84%E4%B8%80%E9%A1%B5.png)
我使用 hyperref 来链接目录中的条目。
但是对于下面的例子,我遇到了一个问题:
\item{\textbf{item one}\addcontentsline{toc}{subsection}{item one}\\
Lots of text...
}
\newpage
\item{\textbf{item two}\addcontentsline{toc}{subsection}{item two}\\
Lots of text...
}
问题是链接到item two
紧接在 之前的页面item two
(即 之前\newpage
)而不是item two
。
我也尝试过不用,\newpage
但是如果的第一行在item two
下一页,就会犯同样的错误。
奇怪的是,目录中的页码是正确的,但链接却不正确......
答案1
正如 hyperref 中所述手动的(第 4 条附加用户宏),
\phantomsection
之前需要一个命令\addcontentsline
来保证正确链接。
\phantomsection
\item{\textbf{item two}\addcontentsline{toc}{subsection}{item two}\\
Lots of text...
}
这是一个小文件:
\documentclass{article}
\usepackage{blindtext}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\clearpage
\begin{itemize}
\item{\textbf{item one}\phantomsection
\addcontentsline{toc}{subsection}{item one}\\
\blindtext
}
\newpage
\item{\textbf{item two}\phantomsection
\addcontentsline{toc}{subsection}{item two}\\
\blindtext
}
\end{itemize}
\end{document}
itemize
由于代码中没有提供进一步的信息,因此对于类别、环境等有一些猜测。
我省略了屏幕截图,因为它没有显示非常复杂的输出。