![Hyperref 和全名(标题上的引用)](https://linux22.com/image/315353/Hyperref%20%E5%92%8C%E5%85%A8%E5%90%8D%EF%BC%88%E6%A0%87%E9%A2%98%E4%B8%8A%E7%9A%84%E5%BC%95%E7%94%A8%EF%BC%89.png)
我在用fullname.sty
但似乎,如果我激活,它就会对在里面使用的hyperref
所有命令发出抱怨,并显示以下消息:\cite
\caption
\reserved@a 定义中的参数数量非法。
我尝试阅读相关帖子,但无法找到为什么它不起作用的原因。
答案1
该fullname
软件包非常古老:它的发布日期是 1992 年 3 月,这意味着它是为 LaTeX 2.09 编写的。
它重新定义了\cite
它,使其失去其稳健性。可以使其变得稳健,但需要一个技巧,因为\MakeRobust
它被通常\cite
是强壮的。
然而,当使用该技巧时,LaTeX 会失败并出现“超出 TeX 容量”的情况。
\protect
您可以通过在移动论证中使用when来解决这个问题\cite
。我的建议是使用更新、更强大的引用包,例如natbib
或biblatex
。
这是一个简单的例子:
\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
不再是必要的。但是,这又像是试图修理你在地下室找到的曾祖父的自行车。这是个不错的爱好,但仅此而已。