Allow more authors before replacement by “et al.” with natbib/achemso

I'm using the natbib package to create my bibliography combined with the achemso style. I know there is a achemso package to create achemso-themed articles, but I'm writing a thesis so that's not applicable. Currently, I use the package as follows:

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

\begin{document}

[...]

\bibliographystyle{achemso}
\bibliography{Masterthesis2014}

\end{document}


The standard settings cut off more than 15 authors by "et al." However, there is one citation that has a LOT of authors (>30, haven't counted them) and everyone has to be cited (it's Gaussian, for those who care). I was wondering how I could make them all appear. I tried changing the achemso.bst (located in ...\MiKTeX 2.9\bibtex\bst\achemso\achemso.bst)'and made the following edit

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


Where the original was

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

• After making the edits to (a copy of) the file achemso.bst, did you rerun LaTeX/BibTeX/LaTeX/LaTeX on your document? – Mico Jun 15 '14 at 13:23

The achemso bundle comes with a package of the same name which is designed to pass on the control information automatically to the bibliography style. This would usually be used in a form such as

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@manual{Fox2009,
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}


where the special value 0 is used for the maxauthors key to indicate that no truncation should take place at all. (Note that the filecontents package is used here just so that I can bundle up a demo into a single code snippet.)

If you wish to control the output entirely by hand then you need to create a dedicated control bibliography entry and 'cite' it correctly. A suitable construct in this case would be

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@manual{Fox2009,
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}


where again I've bundled everything up into one file.

Note that you should not edit files in your TeX tree directly: this is a recipe for incompatibility. If you do want to edit, copy to another location, rename the file and then edit.

You should use biblatex, and more specifically biblatex-chem (same author as achemso): for instance you can set the following options at load time:

maxnames=40, minnames=3


which means that up to 40 names, the list of authors is not cut, but with more than 40 it is cut after the third name. You may set it differently for citations and bibliography with:

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


There is a second entry for "firstonly.bool" in the achemso.bst file below where you made the changes. There you need to also change the entry from #1 to #100 for it to work. Than it did work for me.