在我的论文中,大约一百个引用中只有一个是错误的。这是一本有四位作者的书,比如 Abraham、Barminton、Cetralini 和 Durman (2008),但从来没有出现过 Abraham et al (2008) --- 总是列出所有四位作者。对于所有其他参考文献,只有在第一次引用参考文献时才会出现完整的作者列表。我花了很多时间试图找出是什么让这个参考文献如此特别,但都无济于事。
我考虑过一种解决方法
\defcitealias{ABCD2008}{Abraham et al. (2008)}
然后使用\citetalias{ABCD2008}
得到 Abraham et al. (2008)。一切都很完美。不幸的是,这个罪魁祸首是最常用的参考文献之一,我经常将它用作\citet[][sec. 3](ABCD2008)
或\citet[e.g.][](ABCD2008)
,类似地与 一起使用\citep
。
是否可以重新定义,\defcitealias{key}{text}
以便我可以使用两个可选参数,就像我使用citet
和一样citep
?
以下是链接http://crpit.com/natbib.sty相关行如下
\newcommand\defcitealias[2]{%
\@ifundefined{al@#1\@extra@b@citeb}{}
{\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
\@namedef{al@#1\@extra@b@citeb}{#2}}
\DeclareRobustCommand\citetalias{\begingroup
\NAT@swafalse\def\NAT@ctype{3}\NAT@parfalse\NAT@citetp}
\DeclareRobustCommand\citepalias{\begingroup
\NAT@swatrue\def\NAT@ctype{3}\NAT@partrue\NAT@citetp}
任何帮助都感激不尽。
答案1
我不确定我是否正确理解了您遇到的问题。为了举例说明,我假设我们有一个条目,其中有四位作者——比如 Abraham、Barminton、Cetralini 和 Durman——于 2008 年出版,并且该条目具有“键” abcd2008
。此外,我认为您正在使用natbib
选项加载包longnamesfirst
。最后,我了解到,虽然您希望abcd2008
从第二个引文实例开始以缩写形式显示引文,即“Abraham et al. (2008)”,但它目前从未缩写过,即它始终显示为“Abraham、Barminton、Cetralini 和 Durman (2008)”。
该怎么办?首先,一定要检查条目中作者姓名是否正确列出:没有多余的逗号,也没有其他任何附加内容。
如果该问题检查无误,但问题仍然神秘地未得到解决,您确实可以使用 natbib 的引文别名功能。此外,由于您提到此项目出现的频率很高,您可能希望将引文别名设置为
\defcitealias{abcd2008}{Abraham et~al. (2008)}
引用natbib
用户指南,命令 \citetalias
和\citepalias
......
... 功能与 \citet 和 \citep 非常相似:它们可能在参数中采用多个键,可能包含注释,并标记为超链接。
因此,您确实可以发出诸如这样的引用命令\citetalias[e.g.,][p.~59]{abcd2008}
。