![在使用 et al. 之前,手动更改 achemso.bst 以允许超过 15 位作者](https://linux22.com/image/457934/%E5%9C%A8%E4%BD%BF%E7%94%A8%20et%20al.%20%E4%B9%8B%E5%89%8D%EF%BC%8C%E6%89%8B%E5%8A%A8%E6%9B%B4%E6%94%B9%20achemso.bst%20%E4%BB%A5%E5%85%81%E8%AE%B8%E8%B6%85%E8%BF%87%2015%20%E4%BD%8D%E4%BD%9C%E8%80%85.png)
我正在使用一个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.