Natbib:如何用“and”替换基于 \citet 的引用列表中的最后一个逗号?

Natbib:如何用“and”替换基于 \citet 的引用列表中的最后一个逗号?

当我输入时,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}.

相关内容