Abbreviating journal titles is something which it is not easy to achieve programmatically in a reliable way, as it needs a list of 'known' titles to work from. As such, achemso
does not attempt to abbreviate the journal
field. Tools such as JabRef do include the ability to search and replace full journal titles with the correct abbreviations.
At one point, I did explore some code to use a dictionary-based approach to abbreviate titles, but this is difficult to do reliably without some manual intervention. Thus it has never been included in release versions of achemso
.
(Aside: biblatex
with Biber does offer the possibility to do more complex field substitution, which could be used here. However, this is not at present a method which is sufficiently widely available to allow its use in achemso
.)
The use of the achemso
package is recommended when using the achemso
bibliography style as it provides a convenient interface to alter the control values used by the style. However, it's perfectly possible to use the bibliography style without the package. To do that, the key thing to bear in mind is that it's a numbered natbib
style, and so you should be loading the natbib
package with the numbers
option
\begin{filecontents}{\jobname.bib}
@ARTICLE{Abernethy2003,
author = {Colin D. Abernethy and Gareth M. Codd and Mark D. Spicer
and Michelle K. Taylor},
title = {{A} highly stable {N}-heterocyclic carbene complex of
trichloro-oxo-vanadium(\textsc{v}) displaying novel
{C}l---{C}(carbene) bonding interactions},
journal = {{J}. {A}m. {C}hem. {S}oc.},
year = {2003},
volume = {125},
pages = {1128--1129},
number = {5},
doi = {10.1021/ja0276321},
}
\end{filecontents}
\documentclass{article}
\usepackage[sort&compress,numbers,super]{natbib}
\bibliographystyle{achemso}
\begin{document}
Text\cite{Abernethy2003}
\bibliography{\jobname}
\end{document}
If you want to be able to control the output of the bibliography, for example setting whether or not article titles are included, then you need to have a special 'control' database entry, and to cite this. That can be achieved in basically the same way the package works:
\begin{filecontents}{\jobname.bib}
@ARTICLE{Abernethy2003,
author = {Colin D. Abernethy and Gareth M. Codd and Mark D. Spicer
and Michelle K. Taylor},
title = {{A} highly stable {N}-heterocyclic carbene complex of
trichloro-oxo-vanadium(\textsc{v}) displaying novel
{C}l---{C}(carbene) bonding interactions},
journal = {{J}. {A}m. {C}hem. {S}oc.},
year = {2003},
volume = {125},
pages = {1128--1129},
number = {5},
doi = {10.1021/ja0276321},
}
\end{filecontents}
\begin{filecontents}{\jobname-control.bib}
@Control{achemso-control,
ctrl-article-title = "no",
ctrl-chapter-title = "no",
ctrl-etal-number = "15",
ctrl-etal-firstonly = "yes",
}
\end{filecontents}
\documentclass{article}
\usepackage[sort&compress,numbers,super]{natbib}
\bibliographystyle{achemso}
\AtBeginDocument{\nocite{achemso-control}}
\begin{document}
Text\cite{Abernethy2003}
\bibliography{\jobname,\jobname-control}
\end{document}
or of course you can add the control entry to your main .bib
file. Hopefully the control entries are clear enough.
Best Answer
There are a couple of things here. First, you need
\makeatletter
to access internal commands: see What do \makeatletter and \makeatother do?. Second, you don't want to make new variables, just to set them