fixme 软件包破坏了 makeidx 生成的索引中的页面链接

fixme 软件包破坏了 makeidx 生成的索引中的页面链接

我遇到了一个问题,当我包含 fixme 包时,页面链接无法用于我的索引。我当然可以想出一些解决方法,但我想知道是否有任何修复方法。这是一个 MWE。如果 fixme 包行被注释掉,索引中的链接就可以正常工作。

\documentclass{article}
\usepackage{hyperref}
\usepackage{makeidx}
\usepackage{fixme} %<- This breaks hyperlinks for the index
\makeindex
\begin{document}
test \index{test}
\clearpage
foobar \index{foobar|textbf}
\printindex
\end{document}

答案1

确保fixme在之前加载包hyperref,这是一个已知的冲突。
因此,您应该使用以下代码:

\documentclass{article}
\usepackage{fixme} % changed the order to set fixme before hyperref
\usepackage{hyperref}
\usepackage{makeidx}

\makeindex
\begin{document}
test \index{test}
\clearpage
foobar \index{foobar|textbf}
\printindex
\end{document}

fixme通过在之前加载hyperref。这解决了冲突,因为 hyperref 会调整其超链接以适应先前加载的包所做的更改。

根据经验,hyperref除了少数已知例外(如cleveref),通常在所有软件包中最后加载。这是为了确保hyperref可以将其超链接功能应用于其他软件包所做的修改。

hyperref文档,第 6 页(第 3 项隐式行为下):

确保它位于您最后加载的包中,以使其有机会不被覆盖,因为它的工作是重新定义许多 LATEX 命令。

相关内容