我正在使用natbib
软件包来列出参考文献。我一直在努力使用 BibTeX。我正在为《金融杂志》撰稿,他们希望论文正文中的 3 篇以上引文采用“et al.”格式。但该杂志的文件规定,.bst
无论多少作者都不会使用 natbib\citet
或\citep
(或任何其他引用方法)将作者列表截断为“Jones et al. (2009)”(例如);所有作者都会被列出。
我找到了一个解决方案不同的.bst
(不是《金融杂志》的.bst
)。但该杂志的.bst
功能format.names
与此完全不同,我无法编辑它,以至于每篇拥有 3 位以上作者的论文都会在论文正文中被截断为“et al.”
请帮忙。以下是 Journal 函数的代码format.names
(来源:http://www.ivo-welch.info/computers/bstfiles/):
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ nameptr #1 >
{ s nameptr "{ff }{vv~}{ll}{, jj}" format.name$ 't := }
{ s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := }
if$
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
", " *
t "others" =
{ " et~al." * }
% { " {\small and} " * t * }
{ " and " * t * }
%%%KCB: added \small %%KD removed small
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
答案1
链接样式是为使用 LaTeX 内核的\cite
而不是 的“标准” BibTeX 生成的natbib
。因此,您应该考虑.bst
使用custom-bib
或者考虑改用biblatex
。
答案2
好吧,我遇到了同样的问题,因为我想在 beamer 演示文稿中使用更短的引用(即使《金融杂志》仅在三位以上作者后缩写)。
需要更改的不是 .bst 文件中的“format.names”函数,而是“format.lab.names”函数。这是正确的函数。(我认为这仍然很重要,因为这个函数似乎也控制着其他 .bst 文件中的 et al. 阈值。)
FUNCTION {format.lab.names}
{'s :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}" format.name$
't :=
nameptr #1 >
{
% Change here numnames from #3 to #2 if et al. should come up
% for any reference with more than 2 authors
nameptr #2 =
numnames #2 > and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{ " et~al." * }
{
numnames #2 >
{ "," * }
'skip$
if$
bbl.and
space.word * t *
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}