这“hyperref 包的变更日志”提出支持showkeys
软件包被添加到hyperref
2000-05-08、2001-01-27 和 2007-05-29 在不同阶段进行了测试。但是,这两个软件包之间似乎仍然存在一些不兼容性。此外,根据先加载哪个软件包,会发生一些奇怪的交互。
考虑以下 MWE,其中 在showkeys
之前加载hyperref
:
\documentclass{article}
\usepackage{showkeys}
\usepackage{hyperref}
\begin{document}
\section{New Section}
\label{some-label}
This is a really important section.
Now we want to refer to~\autoref{some-label} on \autopageref{some-label}.
What if we just refer to section~\ref{some-label} on page~\ref{some-label}?
This seems to work fine.
\begin{thebibliography}{99}
\bibitem{abc}
This book has no title.
\end{thebibliography}
\end{document}
首先,该\autopageref
命令似乎不支持 package showkeys
,因为不会打印标签。其次,在这个例子中,\bibitem
也不会打印密钥。
另一方面,假设我们反转包加载顺序,hyperref
在 之前加载showkeys
。在这种情况下, 的键\bibitem
显示正确,但现在\autopageref
完全损坏:输出文本中缺少页码,由 代替??some-label
,并写入以下警告:
LaTeX Warning: Reference `*' on page 1 undefined on input line 28.
因此,当我准备草稿文档时,我不得不在\bibitem
不显示按键和完全损坏按键之间做出选择。只要输出的是正确的文本(之前),\autopageref
我可以忍受不显示按键,但我真的希望显示按键(之前),这样我就可以在输入文档的其余部分时将标签复制到引文中。我该如何纠正这些问题中的一个或另一个,以获得两种方案的最佳效果?\autopageref
showkeys
hyperref
\bibitem
hyperref
showkeys
答案1
该hyperref
手册第 8 节指出:
排版 \label 和 \ref 宏内容的包,例如 showkeys。由于 hyperref 包重新定义了这些命令,因此必须设置 implied=false 才能使这些包正常工作。
如果文档以如下方式开始,则您的示例似乎对我有用:
\documentclass{article}
\usepackage{showkeys}
\usepackage[implicit=false]{hyperref}