在使用 et al. 之前,手动更改 achemso.bst 以允许超过 15 位作者

在使用 et al. 之前,手动更改 achemso.bst 以允许超过 15 位作者

我正在使用一个achemso.bst文件来记录我的参考书目。但我想增加使用 et al. 之前显示的作者数量。通常我只会增加这个数字numnames #15。但这只有在我减少数字时才有效。当我将值增加到 20 时。什么都没有改变,有 18 位作者的论文仍然缩写为 et al。

您可以在这里找到完整的文件: https://github.com/AlbertDeFusco/texmf/blob/master/bibtex/bst/jpc/achemso.bst

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames #15 >
  s numnames "{ll}" format.name$ "others" = numnames #1 > and
  or 'etal :=
  etal
    { #1 #1 + 'namesleft := }
    { numnames 'namesleft := }
  if$
    { namesleft #0 > }
    { s nameptr "{f. }{vv~}{ ll}{, jj}" format.name$ 't :=
      nameptr #1 >
   { namesleft #1 >
       { ",\ \ " * t * }
       { nameptr #2 >
      { "" * }
      'skip$
         if$
         t "others" =
         etal or
      { " \textit{et al.}\ " * }
      { ",\ \ " * t * }
         if$
       }
     if$
   }
   't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

事实上,我最初的想法是正确的。正如 Marjin 指出的那样,我的参考文献中有一个问题,它使用了and others

答案1

当前版本所需要做的achemso就是调整相关的用户公开设置,如果加载包,可以从 LaTeX 中完成此操作achemso

\begin{filecontents*}[overwrite]{\jobname.bib}
@ARTICLE{Demo,
  author = {
    Author One and
    Author Two and
    Author Three and
    Authro Four and
    Author Five and
    Author Six and
    Author Seven and
    Author Eight and
    Author Nine and
    Author Ten and
    Author Eleven and
    Author Twelve and
    Author Thirteen and
    Author Fourteen and
    Author Fifteen and
    Author Sixteen and
    Author Seventeen and
    Author Eighteen},
  title = {A demo publciations},
  journal = {J.~Irrep.~Res.},
  year = {2022},
  pages = {1--18},
}
\end{filecontents*}

\documentclass{article}
\usepackage{achemso}
\setkeys{acs}{maxauthors = 18}
\begin{document}

\cite{Demo}
\bibliography{\jobname}

\end{document}

如果您没有加载该包,您将需要创建具有 值的适当的控制引用ctrl-etal-number

答案2

我最初提到的解决方案是将值更改numnames #15为更大的值,这确实有效。但是,您需要确保文件中.bib所有其他内容都已列出,并且字段and others中不包含author。一旦and others包含,achemso将仅使用第一作者与et al.

相关内容