多部分文档章节编号重置后,如何让hyperref超链接正确跳转?
问题原因
hyperref生成的章节锚点默认仅使用章节编号(如chapter.1),当你在每个\part后重置章节计数器时,不同部分的第1章会共用同一个锚点名称,导致点击目录超链接时,只会跳转到第一个使用该锚点的章节。
解决方案
重新定义hyperref用于生成锚点的\theHchapter命令,让锚点包含part编号,确保每个章节的锚点唯一:
\documentclass{book} \usepackage{lipsum} \usepackage{hyperref} % 修改锚点标识,结合part和chapter编号,避免重复 \renewcommand{\theHchapter}{\thepart.\thechapter} \begin{document} \tableofcontents \part{THE BEGINNING} \chapter{AAAA} \lipsum[1-5] \chapter{BBBB} \lipsum[6-10] \part{THE MIDDLE} \setcounter{chapter}{0} \chapter{CCCC} \lipsum[11-15] \chapter{DDDD} \lipsum[16-20] \part{THE END} \setcounter{chapter}{0} \chapter{EEEE} \lipsum[21-25] \chapter{FFFF} \lipsum[26-30] \end{document}
原理说明
\theHchapter是hyperref内部用来生成唯一锚点的命令,默认值和\thechapter相同,导致同编号章节锚点冲突。- 修改为
\thepart.\thechapter后,每个章节的锚点会变成part.1.chapter.1、part.2.chapter.1这类唯一标识,彻底解决超链接跳转错误的问题。
内容的提问来源于stack exchange,提问作者Frotz
相关产品推荐
相关产品推荐

