重置章节计数器后出现错误的(超)引用

重置章节计数器后出现错误的(超)引用

以下 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}

相关内容