当我输入时,Natbib 的\citet
命令当前有以下输出\citet{maddison-cct,ridley-comparative}
:
麦迪逊 [8], 里德利 [13]
是否存在我没有找到的另一个命令,或者是否有办法重新定义它以获得以下命令?
麦迪逊 [8] 和 里德利 [13]
(更一般地说,我想\citet{x1,x2,...,xn}
输出x1 [1], x2 [2], ..., xn-1 [n-1] and xn [n]
)。
答案1
这听起来像是一个挑战,我喜欢挑战。这就是我想到的
% #1 {, } - #2 { and } - #3 \cmd - #4 list
\makeatletter
\newcommand\textlist[4]{%
\let\last@item\relax
\let\last@sep\relax
\@for\@ii:=#4\do{%
\ifx\last@item\relax\else
\ifx\last@sep\relax
\def\last@sep{#2}%
\else#1\fi
#3{\last@item}%
\fi
\let\last@item\@ii
}%
\ifx\last@item\relax\else
\last@sep#3{\last@item}%
\fi
}
\makeatother
\newcommand{\citett}{\textlist{, }{ and }{\citet}}
这定义了一个\textlist
,它基本上将给定的命令应用于参数列表,并根据需要使用两个给定的分隔符之一。然后你可以写
\citett{paper1,paper2,paper3}
并产生一些类似于你输入的内容
\citet{paper1}, \citet{paper2} and \citet{paper3}
我鼓励其他人对我定义的命令的可能改进进行评论,并建议使用其他工具箱、TeX 风格等进行替代定义。
答案2
当使用作者年份样式和作者编号引用标注时,软件包的用户指南natbib
(参见第 9 页,下半部分)明确不鼓励使用\citet
带有多个参数的引用。如果引用的所有文章都具有相同的作者,则会出现此限制的一个例外——软件包的用户指南中没有明确说明,但从上下文来看几乎是不言而喻的。但是,此例外不适用于您提供的示例,对吗?
禁止使用\citet
多个参数不是顺便说一下,适用于\citep
。也就是说,\citep
与多个参数一起使用是完全没问题的。
尤其是当你引用大量文章来支持或反对某个论点时,你应该强烈倾向于变\citep
体。也就是说,你永远不应该考虑写这样的东西
琼斯 (1999)、米勒 (2000)、史密斯 (2002)、斯特里克兰 (2001) 和茨维基 (1915) 都认为……
在英语文档中(我想在许多其他语言中也是如此),包含多部分主语名词的句子必然会让读者感到疲惫和/或分心。你想冒险犯这种错误吗?
回到你的例子:写作\citet{maddison-cct,ridley-comparative}
简直是糟糕和/或懒惰。为了确保正确的语法句子结构,你应该写
\citet{maddison-cct} and \citet{ridley-comparative} have argued that ...
或者选择\citep
方法,即写类似
... is the main argument \citep[cf.][]{maddison-cct,ridley-comparative}.