在下面的 MWE 中,索引页中的超链接不会将您带到包含索引的正确页面:
\documentclass{book}
\usepackage{lipsum, fancyhdr}
\usepackage{makeidx}
\makeindex
\usepackage{hyperref}
\hypersetup{hidelinks,backref=true,pagebackref=true,hyperindex=true,hypertexnames=false,colorlinks=false,breaklinks=true,bookmarks=true,bookmarksopen=false,pdftitle={Title},pdfauthor={Author}}
\begin{document}
\pagestyle{empty}
% pagestyle{plain}
\frontmatter
\lipsum[1]
\mainmatter
\pagestyle{fancy}
\chapter{1}
\section{1}
\lipsum
This is index ONE\index{One}
\newpage
This is index TWO\index{Two}
\backmatter
\pagestyle{empty}
%\pagestyle{plain}
\lipsum[1]
\cleardoublepage
\setlength{\columnsep}{0.75cm}
\addcontentsline{toc}{chapter}{Index}
\printindex
\end{document}
如果您单击索引中的“2”,您将被带到第 ii 页,而不是索引所在的第 2 页。
您能否提供一个解决方案,以便您单击索引中的超链接时会被带到正确的页面?
答案1
我遇到了同样的问题,在 Index 中,显示了正确的页码,但 hyperref 指向前 3 页......
就我而言,我通过在\pagenumbering{roman}
后面直接放置 来解决这个问题\begin{document}
。
\begin{document}
\pagenumbering{roman}
这似乎\makeindex
直接获得了内部页码和超链接。
答案2
如果hypertexnames=false
正确的索引链接也被禁用,则使用默认值true
。
选择breaklinks
不是如果驱动程序不支持,则神奇地添加对跨行断开链接的支持。然后文本会跨行断开,但链接区域会完全错误。
PDF 信息键的数据应设置后包hyperref
是通过 加载的\hypersetup
。否则 LaTeX 将硬扩展值,结果可能是垃圾。
选项设置backref=true
和pagebackref=true
是矛盾的。要么使用前者并附章节反向引用,要么使用后者并附页码反向引用。
另外,我还推荐bookmark
可以更快更新书签的软件包。