使用 natbib/achemso 允许在用“et al.”替换之前添加更多作者

使用 natbib/achemso 允许在用“et al.”替换之前添加更多作者

我正在使用 natbib 包来创建我的参考书目,并结合 achemso 风格。我知道有一个 achemso 包可以创建 achemso 主题文章,但我正在写一篇论文,所以不适用。目前,我使用该包的方式如下:

\usepackage[super,sort&compress,comma]{natbib} % Bibliography style package

\begin{document}

[...]

\bibliographystyle{achemso}
\bibliography{Masterthesis2014}

\end{document}

标准设置会用“et al.”截断超过 15 位作者。但是,有一个引文有很多作者(>30,没有统计),每个人都必须被引用(对于那些关心的人来说,它是高斯的)。我想知道如何才能让他们都出现。我尝试更改 achemso.bst(位于 ...\MiKTeX 2.9\bibtex\bst\achemso\achemso.bst)并进行了以下编辑

#1 'ctrl.article.title.bool :=
#0 'ctrl.chapter.title.bool :=
#100 'ctrl.etal.firstonly.bool :=
#100 'ctrl.etal.number.int :=

原件在哪里

#0 'ctrl.article.title.bool :=
#0 'ctrl.chapter.title.bool :=
#1 'ctrl.etal.firstonly.bool :=
#15 'ctrl.etal.number.int :=

答案1

achemso包附带一个同名的包,旨在将控制信息自动传递给参考书目样式。这通常以如下形式使用

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@manual{Fox2009,
  address      = {Wallingford, CT},
  author       = {M. J. Frisch and G. W. Trucks and H. B. Schlegel and
  G. E. Scuseria and M. A. Robb and J. R. Cheeseman and G. Scalmani and
  V. Barone and B. Mennucci and G. A. Petersson and H. Nakatsuji and
  M. Caricato and X. Li and H. P. Hratchian and A. F. Izmaylov and
  J. Bloino and G. Zheng and J. L. Sonnenberg and M. Hada and M. Ehara and
  K. Toyota and R. Fukuda and J. Hasegawa and M. Ishida and T. Nakajima and
  Y. Honda and O. Kitao and H. Nakai and T. Vreven and Montgomery, {Jr.},
  J. A. and J. E. Peralta and F. Ogliaro and M. Bearpark and J. J. Heyd and
  E. Brothers and K. N. Kudin and V. N. Staroverov and R. Kobayashi and
  J. Normand and K. Raghavachari and A. Rendell and J. C. Burant and
  S. S. Iyengar and J. Tomasi and M. Cossi and N. Rega and J. M. Millam and
  M. Klene and J. E. Knox and J. B. Cross and V. Bakken and C. Adamo and
  J. Jaramillo and R. Gomperts and R. E. Stratmann and O. Yazyev and
  A. J. Austin and R. Cammi and C. Pomelli and J. W. Ochterski and
  R. L. Martin and K. Morokuma and V. G. Zakrzewski and G. A. Voth and
  P. Salvador and J. J. Dannenberg and S. Dapprich and A. D. Daniels and
  Ö. Farkas and J. B. Foresman and J. V. Ortiz and J. Cioslowski and
  D. J. Fox},
  organization = {Gaussian, Inc.},
  title        = {Gaussian~09 {R}evision {C}.01},
  year         = {2009}
}
\end{filecontents*}

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

Some text.\cite{Fox2009}

\bibliography{\jobname}

\end{document}

其中,特殊值0用作maxauthors键,表示根本不应该发生截断。(请注意,filecontents此处使用包只是为了将演示捆绑到单个代码片段中。)

如果您希望完全手动控制输出,则需要创建专用的控制参考书目条目并正确“引用”它。在这种情况下,合适的构造是

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@manual{Fox2009,
  address      = {Wallingford, CT},
  author       = {M. J. Frisch and G. W. Trucks and H. B. Schlegel and
  G. E. Scuseria and M. A. Robb and J. R. Cheeseman and G. Scalmani and
  V. Barone and B. Mennucci and G. A. Petersson and H. Nakatsuji and
  M. Caricato and X. Li and H. P. Hratchian and A. F. Izmaylov and
  J. Bloino and G. Zheng and J. L. Sonnenberg and M. Hada and M. Ehara and
  K. Toyota and R. Fukuda and J. Hasegawa and M. Ishida and T. Nakajima and
  Y. Honda and O. Kitao and H. Nakai and T. Vreven and Montgomery, {Jr.},
  J. A. and J. E. Peralta and F. Ogliaro and M. Bearpark and J. J. Heyd and
  E. Brothers and K. N. Kudin and V. N. Staroverov and R. Kobayashi and
  J. Normand and K. Raghavachari and A. Rendell and J. C. Burant and
  S. S. Iyengar and J. Tomasi and M. Cossi and N. Rega and J. M. Millam and
  M. Klene and J. E. Knox and J. B. Cross and V. Bakken and C. Adamo and
  J. Jaramillo and R. Gomperts and R. E. Stratmann and O. Yazyev and
  A. J. Austin and R. Cammi and C. Pomelli and J. W. Ochterski and
  R. L. Martin and K. Morokuma and V. G. Zakrzewski and G. A. Voth and
  P. Salvador and J. J. Dannenberg and S. Dapprich and A. D. Daniels and
  Ö. Farkas and J. B. Foresman and J. V. Ortiz and J. Cioslowski and
  D. J. Fox},
  organization = {Gaussian, Inc.},
  title        = {Gaussian~09 {R}evision {C}.01},
  year         = {2009}
}
\end{filecontents*}

\documentclass{article}
\usepackage[super,sort&compress,comma]{natbib}
\AtBeginDocument{%
  \nocite{achemso-control}%
}
% Special control 'bibliography' file
\begin{filecontents*}{\jobname-auto.bib}
@Control{achemso-control,
  ctrl-etal-number = 0
}
\end{filecontents*}
\begin{document}

Some text.\cite{Fox2009}

\bibliography{\jobname-auto,\jobname}
\bibliographystyle{achemso}

\end{document}

我再次将所有内容捆绑到一个文件中。

请注意,您不应直接编辑 TeX 树中的文件:这会导致不兼容。如果您确实想编辑,请复制到另一个位置,重命名文件,然后编辑。

答案2

您应该使用biblatex,更具体地说 biblatex-chem(与 achemso 相同的作者):例如,您可以在加载时设置以下选项:

maxnames=40, minnames=3

这意味着,如果作者名字不超过 40 个,则不会截断作者列表,但如果超过 40 个,则会在第三个名字之后截断。您可以对引用和参考书目进行不同的设置:

maxcitenames=xx, mincitenames=yy, maxbibnames=zz, minbibnames=tt

答案3

在您进行更改的 achemso.bst 文件中,下面有第二个“firstonly.bool”条目。您还需要将条目从 #1 更改为 #100 才能使其正常工作。对我来说,它确实有效。

相关内容