Hyperref 和全名(标题上的引用)

Hyperref 和全名(标题上的引用)

我在用fullname.sty但似乎,如果我激活,它就会对在里面使用的hyperref所有命令发出抱怨,并显示以下消息:\cite\caption

\reserved@a 定义中的参数数量非法。

我尝试阅读相关帖子,但无法找到为什么它不起作用的原因。

答案1

fullname软件包非常古老:它的发布日期是 1992 年 3 月,这意味着它是为 LaTeX 2.09 编写的。

它重新定义了\cite它,使其失去其稳健性。可以使其变得稳健,但需要一个技巧,因为\MakeRobust它被通常\cite 强壮的。

然而,当使用该技巧时,LaTeX 会失败并出现“超出 TeX 容量”的情况。

\protect您可以通过在移动论证中使用when来解决这个问题\cite。我的建议是使用更新、更强大的引用包,例如natbibbiblatex

这是一个简单的例子:

\documentclass{article}
\usepackage{fullname}
\usepackage{hyperref}

\begin{document}

\cite{huang2011short}

\shortcite{huang2011short}

\namecite{huang2011short}

\begin{figure}[htp]
X
\caption{\protect\cite{huang2011short}}
\end{figure}

\bibliographystyle{fullname}
\bibliography{enet}

\end{document}

在此处输入图片描述

(该.bib 文件是我用于另一个答案的文件。)

你也可以这样做

\documentclass{article}
\usepackage{fullname}
\usepackage{etoolbox}
\robustify{\cite}
\usepackage{hyperref}

so\protect不再是必要的。但是,这又像是试图修理你在地下室找到的曾祖父的自行车。这是个不错的爱好,但仅此而已。

相关内容