我正在完成我的论文。虽然我使用 LaTeX 已经有一段时间了,但在排版论文时我又学到了很多关于 LaTeX 的知识。不过,我对参考书目中的参考文献格式还是有点小问题。
作为参考书目样式,我使用的是该文件的改编版本unsrtdin.bst
。我设法将其更改为自动剪切作者列表并仅打印前五位作者,而用“其他”替换其余作者。作者列表的最后一个分隔符或只有两位作者之间的分隔符是“and”。这导致剪切作者列表末尾出现“and others”。但是,我更希望在剪切作者列表末尾只使用“et al.”而不在其前面添加任何分隔符。
.bst 文件中我的函数的(希望)相应代码垃圾format.names
如下所示,但我无法找到要更改的正确行:
nameptr #1 >
{
nameptr #5
#1 + =
numnames #5
> and
{ " others" 't := %% simply setting " et al." here produces "and et al."
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ " ; " * t * }
{ numnames #2 >
{ " " * }
'skip$
if$
t "\textsc{others}" = t "\textsc{others} (ed.)" = or
{ " others" * }
{ " and " * t * }
if$
}
if$
}
't
if$
此自定义样式的示例输出如下
我希望
“Tacutu,R.;Craig,T.;Budovsky,A.;Wuttke,D.;Lehmann,G. 等。”
最好的,安娜
答案1
您需要在代码中注释所指示的位置更改" others "
为" et al."
。此外,您还必须更改" and "
为该""
位置下方的几行。以下是完整的FUNCTION {format.names}
:
%% Adelspraedikate beim Sortieren nach den(m) Vornamen auffuehren
%% Abweichend v. DIN !!!
FUNCTION {format.names}
{ 's :=
"" 'u :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{
s nameptr "{ll}" format.name$ 't :=
t capitalize 't :=
s nameptr "{ jj}" format.name$ 'w :=
s nameptr "{, ff}{ vv}{ jj}" format.name$ 'u :=
u text.length$ 'lang :=
#1 'zahl :=
"" 'v :=
{ zahl lang < }
{ u zahl #1 substring$ "~" =
{ v "" =
{ u #1 zahl #1 - substring$ 'v := }
'skip$
if$
v u zahl #2 substring$ * "." * w * 'v :=
}
'skip$
if$
zahl #1 + 'zahl := }
while$
v "" =
{ u 'v := }
'skip$
if$
t v * fkt * 't :=
nameptr #1 >
{
nameptr #5
#1 + =
numnames #5
> and
{ " et al." 't := %% simply setting " et al." here produces "and et al."
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ " ; " * t * }
{ numnames #2 >
{ " " * }
'skip$
if$
t "\textsc{others}" = t "\textsc{others} (ed.)" = or
{ " others" * }
{ "" * t * }
if$
}
if$
}
't
if$ %% Ende der nameptr-Pruefung
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$ %% Ende von { namesleft #0 > } ganz oben
"" 'fkt := %% fkt wird zurueckgesetzt
}
生成结果: