以下 MWE 生成一个 PDF,其目录包含两个条目:“Foo”和“Bar”,且页码正确。到目前为止,一切顺利。但是,单击“Bar”链接时,我被带到了“Foo”的页面。
\documentclass{report}
\usepackage{hyperref}
\newcommand*\backmatter{\setcounter{chapter}{0}}
\begin{document}
\tableofcontents
\chapter{Foo}
\backmatter
\chapter{Bar}
\end{document}
(由 制作pdflatex
,运行两次。)
这个 MWE 是从(很多!) 更复杂的文档,但上述内容似乎确实可靠地重现了错误。
重新设置章节数似乎会混淆 hyperref,即使页码引用仍然准确。请注意,在我的实际文档中,它还\backmatter
做了其他事情,包括将编号样式设置为字母顺序,这样就不会产生混淆,即使两个章节表面上都标记为“第 1 章”。
我该如何解决?这是一个错误吗?有解决方法吗?
答案1
Hyperref 有时候太聪明了。让它变得笨一点,这样更健壮:
\usepackage[hypertexnames=false]{hyperref}
答案2
您有两个第 1 章。这自然会使超链接混淆。您必须为内部计数器赋予独特的“外观”。例如:
\documentclass{report}
\usepackage{hyperref}
\newcommand*\backmatter{%
\setcounter{chapter}{0}%
\renewcommand\theHchapter{back.\arabic{chapter}}}
\begin{document}
\tableofcontents
\chapter{Foo}
\backmatter
\chapter{Bar}
\end{document}