自 TeXlive 2010 以来,目录中的索引超链接错误

自 TeXlive 2010 以来,目录中的索引超链接错误

自从 TeXLive 更新以来,无论是在 macOS 还是 Ubuntu 上(从 12.04 到 13.04),目录中的索引都无法正确引用。相反,索引的超链接指向参考书目。

很多问题都与索引的超链接问题有关,但由于我的问题似乎有些不同,所以我发布了一个新问题。我强调的是,这在 TeXlive 的旧版本(2010 年之前)下运行正常,这表明中间的一些修改导致了这个问题。

这是一个简单的例子:

\documentclass[a4paper]{report}
\usepackage{makeidx} 
\usepackage{tocbibind}
\usepackage{hyperref}
\makeindex
\begin{document}
\tableofcontents

test\index{test}

\begin{thebibliography}{1}
  \bibitem{test} Test, 2013.
\end{thebibliography}

\printindex
\end{document}

答案1

hyperref 补丁(在 中hypertex.def\@schapter( 使用的命令\chapter*)用于插入锚点等

 \chapter*{blub}
 \addcontentsline...

按需要工作并提供正确的链接。

tocbibind重新定义了索引,不使用\chapter*\@schapter作为标题,而只使用\@makeschapterhead和,因此缺少锚点。我认为它从来没有起作用。

您必须自己插入锚点:

\clearpage
\phantomsection
\printindex

\@schapter或者使用像在这种情况下使用的 scrreprt 这样的类。

答案2

链接imakeidx是正确的,但必须在它之前加载,否则它将覆盖通过使用正确的链接获取目录中的索引tocbibind所做的更改。imakeidx

\documentclass[a4paper]{report}

\usepackage{tocbibind}
\usepackage{imakeidx}
\usepackage{hyperref}

\makeindex[intoc]

\begin{document}
\tableofcontents

test\index{test}

\begin{thebibliography}{1}
  \bibitem{test} Test, 2013.
\end{thebibliography}

\printindex

\end{document}

答案3

这不是答案,只是此处格式更好的评论。Bibtex 不相关

\documentclass[a4paper]{report}
\usepackage{makeidx} 
\usepackage{tocbibind}
\usepackage{hyperref}
\makeindex
\begin{document}
\tableofcontents

test\index{test}

\begin{thebibliography}{1}
  \bibitem{test} Test, 2013.
\end{thebibliography}

\printindex
\end{document}

答案4

此问题同时存在于reportbook类中,但article类保持不变(因为其中未定义章节)。一个简单的解决方法是使用\clearpage, \phantomsection, \printindex将索引条目(在目录中)链接到正确的页面,但链接似乎会系统地将您带到某个地方略低于索引页的标题 - 其与图表列表、表格列表、参考书目和所有部分单元的工作方式不同。

事实上,通过 KOMA 课程进行测试scrreprtscrbook结果相同,即索引链接到正确的页面,但位置略有错误。正如所提到的埃格尔,使用imakeidx来覆盖tocbibind的设置可以完全解决问题,但是这表明tocbibind包中存在错误,也许是\printindex没有通过创建章节来加载。

相关内容