我正在使用 natbib 和自定义 .bst 文件来处理会议论文。不幸的是,当只有两位作者时,.bst 文件会导致作者姓名之间出现逗号,我需要删除这个逗号。
在 .bst 文件中,以下是 format.names 函数:
FUNCTION {format.names}
{ 'bibinfo :=
duplicate$ empty$ 'skip$ {
's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}{, f.}{, jj}"
format.name$
bibinfo bibinfo.check
't :=
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
"," *
t "others" =
{
" " * bbl.etal *
}
{
bbl.and
space.word * t *
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
} if$
}
我对 .bst 文件中使用的脚本语言不够熟悉,无法修改它。我认为我需要添加另一个条件,即名称总数为 2 时,并进行修改:
namesleft #1 >
{ ", " * t * }
顺便说一句,我相信这个 bst 文件是由会议组织者使用 bst 创建向导创建的。
不幸的是,在这个问题解决之前我无法继续编辑过程...有人可以帮助我吗?
先感谢您。
编辑:这是 MWE:
\documentclass[conf]{new-aiaa}
\begin{document}
Here is a MWE containing a sample citation and references list \cite{peyret2012computational}.
\bibliography{sample}
\end{document}
要使此 MWE 正常工作,您需要以下 sample.bib 文件
@inbook{peyret2012computational,
title={Computational Methods for Fluid Flow},
edition={2},
author={Peyret, Roger and Taylor, Thomas D},
year={1983},
publisher={Springer-Verlag},
address={New York},
chapter={7, 14}
}
以及 new-aiaa.cls 和 new-aiaa.bst 文件,可从位于以下位置的演示者资源页面获取:
https://www.aiaa.org/home/events-learning/events/Technical-Presenter-Resources
或直接从 Overleaf
需要注意的是,我在会议论文中也遇到了这个问题,但这是我的论文,它使用 new-aiaa.bst 文件作为参考,但当然,使用不同的 cls 文件。
感谢您的耐心和帮助。
答案1
下面的操作可以实现你想要的效果:
复制一份new-aiaa.bst
并将其重命名为合理的名称,例如new-aiaa-nocomma.bst
。
该函数中format.names
有一行(第 454 行)仅包含以下内容:
"," *
将此行替换为以下行:
numnames #2 =
{" " *}
{"," *}
if$
这是使用类的 MWE article
。由于是new-aiaa.bst
由期刊创建的,我认为您不应该更改样式以提交给期刊。如果您这样做,您将需要修补以new-aiaa.cls
使用修改后的.bst
文件,因为类会自行加载样式。
\begin{filecontents}{\jobname.bib}
@inbook{peyret2012computational,
title={Computational Methods for Fluid Flow},
edition={2},
author={Peyret, Roger and Taylor, Thomas D},
year={1983},
publisher={Springer-Verlag},
address={New York},
chapter={7, 14}
}
@article{hughes1989new,
title={A new finite element formulation for computational fluid dynamics: {VIII}. The {Galerkin}/least-squares method for advective-diffusive equations},
author={Hughes, Thomas JR and Franca, Leopoldo P and Hulbert, Gregory M},
journal={Computer Methods in Applied Mechanics and Engineering},
volume={73},
number={2},
pages={173--189},
year={1989},
publisher={Elsevier}
}
\end{filecontents}
%\documentclass[conf]{new-aiaa} % Class will need to be changed to use the modified .bst
\documentclass{article}
\usepackage[sort&compress,numbers]{natbib}
\bibliographystyle{new-aiaa-nocomma}
\begin{document}
\cite{peyret2012computational,hughes1989new}
\bibliography{\jobname}
\end{document}