如果书目条目有超过三作者,我只想写出前三位作者的名字,加上“et. al”。
我发现要实现这一点,我必须更改 .bst 文件及其中的“format.names”函数。我发现了另一个地点基本上我的问题已经得到解答。但是我不知道为什么这个解决方案对我的情况不起作用,因此我发布了以下帖子:
更准确地说,我原来的 format.names 函数如下所示:
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " {\em et~al.}" * }
{ string.and * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
新的是
FUNCTION {format.names}
{
nameptr #1 >
{
nameptr #3
#1 + =
numnames #5
> and
{ "\bibinfo{person}{\bibinfo{person}{others}}" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
}
使用新的 format.names 函数时我应用 BibTeX 时出现许多错误:
The top-level auxiliary file: thesis_main.aux
The style file: utphys_custom_threeAuthors.bst
function is an unknown function---line 415 of file utphys_custom_threeAuthors.bst
format.authors is an unknown function---line 415 of file utphys_custom_threeAuthors.bst
Curse you, wizard, before you recurse me:
function format.names is illegal in its own definition
---line 418 of file utphys_custom_threeAuthors.bst
不幸的是,我不懂 .bst 文件的编写语言,我可能会犯一个愚蠢的错误。如果你能帮助我,那就太好了。