如果 AIAA 论文模板中的 *.bst 文件 (natbib) 中恰好有两位作者,则删除逗号

如果 AIAA 论文模板中的 *.bst 文件 (natbib) 中恰好有两位作者,则删除逗号

我正在使用 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

https://www.overleaf.com/latex/templates/latex-template-for-the-preparation-of-papers-for-aiaa-technical-conferences/rsssbwthkptn#.WbgUXMiGNPZ

需要注意的是,我在会议论文中也遇到了这个问题,但这是我的论文,它使用 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}

代码输出

相关内容