% \iffalse meta-comment
%
% Portions copyright (C) 1989-2003 by
%    Donald Arseneau
% Copyright (C) 1996-98 by
%    Mats Dahlgren
% Copyright (C) 2007-08 by
%    Joseph Wright <joseph.wright@morningstar2.co.uk>
%
% Part of this bundle is derived from cite.sty, to which the following
% license applies:
%--------------------------------------------------------------------
%     Copyright (C) 1989-2003 by Donald Arseneau
%     These macros may be freely transmitted, reproduced, or modified
%     provided that this notice is left intact.
%--------------------------------------------------------------------
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any later
% version. The latest version of this license is in
%    http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of
% LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The current maintainer of this work is Joseph Wright.
%
% This work consists of the source file achemso.dtx
%                 and the derived files achemso.ins,
%                                       achemso.cls,
%                                       achemso.sty,
%                                       achemso.pdf,
%                                       achemso-manual.pdf,
%                                       achemso-demo.ltx,
%                                       achemso.bst,
%                                       biochem.bst,
%                                       achre4.cfg,
%                                       acbcct.cfg,
%                                       ancac3.cfg,
%                                       ancham.cfg,
%                                       bichaw.cfg,
%                                       bcches.cfg,
%                                       bomaf6.cfg,
%                                       bipret.cfg,
%                                       crtoec.cfg,
%                                       chreay.cfg,
%                                       cmatex.cfg,
%                                       cgdefu.cfg,
%                                       enfuem.cfg,
%                                       esthag.cfg,
%                                       iecred.cfg,
%                                       inoraj.cfg,
%                                       jafcau.cfg,
%                                       jacsat.cfg,
%                                       jceaax.cfg,
%                                       jcisd8.cfg,
%                                       jctcce.cfg,
%                                       jcchff.cfg,
%                                       jmcmar.cfg,
%                                       jnprdf.cfg,
%                                       joceah.cfg,
%                                       jpcafh.cfg,
%                                       jpcbfk.cfg,
%                                       jpccck.cfg,
%                                       jprobs.cfg,
%                                       langd5.cfg,
%                                       mamobx.cfg,
%                                       mpohbp.cfg,
%                                       nalefd.cfg,
%                                       orlef7.cfg,
%                                       oprdfk.cfg,
%                                       orgnd7.cfg,
%                                       jawltxdoc.sty and
%                                       README
%
% TDS-ready files:
%    The compressed file achemso.tds.zip contains an unpacked version
%    of all of the files included here, and pre-compiled
%    documentation in PDF format.  Simply decompress achemso.tds.zip
%    in your local TeX directory, run your hash program (texhash,
%    initexmf --update-fndb, etc.) and everything will be ready to
%    go.  The user documentation for the package is called
%    achemso-manual.pdf; the file achemso.pdf includes the user
%    manual and the fully-indexed source code.
%
% Unpacking:
%    (a) If achemso.ins is present:
%           tex achemso.ins
%    (b) Without achemso.ins:
%           tex achemso.dtx
%    (c) If you use LaTeX to generate files:
%           latex \let\install=y\input{achemso.dtx}
%
% Documentation:
%    (a) Without write18 enabled:
%          pdflatex achemso.dtx
%          bibtex8 --wolfgang achemso
%          makeindex -s gind.ist achemso.idx
%          makeindex -s gglo.ist -o achemso.gls achemso.glo
%          pdflatex achemso.dtx
%          pdflatex achemso.dtx
%    (b) With write18 enabled:
%          pdflatex achemso.dtx
%          pdflatex achemso.dtx
%          pdflatex achemso.dtx
%
% Installation:
%     Copy achemso.cls, the .sty files, the .bst files and the .cfg
%     files to a location searched by TeX, and if required by your
%     TeX installation, run the appropriate command to build a hash
%     of files (texhash, initexmf --update-fndb, etc.)
%
% Note:
%     The jawltxdoc.sty file is not needed for installation,
%     only for building the documentation; it may be deleted
%     after producing the documentation (if necessary).
%
%<*ignore>
% This is all taken verbatim from Heiko Oberdiek's packages
\begingroup
  \def\x{LaTeX2e}%
\expandafter\endgroup
\ifcase 0\ifx\install y1\fi\expandafter
         \ifx\csname processbatchFile\endcsname\relax\else1\fi
         \ifx\fmtname\x\else 1\fi\relax
\else\csname fi\endcsname
%</ignore>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\preamble
 ----------------------------------------------------------------
 achemso --- Support for submissions to American  Chemical
   Society journals
 Maintained by Joseph Wright
 E-mail: joseph.wright@morningstar2.co.uk
 Released under the LaTeX Project Public License v1.3c or later
 See http://www.latex-project.org/lppl.txt
 ----------------------------------------------------------------

\endpreamble
\Msg{Generating achemso files:}
\generate{\file{jawltxdoc.sty}{\from{\jobname.dtx}{jawltxdoc}}
}
\usedir{tex/latex/achemso}
\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}
          \file{\jobname.cls}{\from{\jobname.dtx}{class}}
          \file{natmove.sty}{\from{natmove.dtx}{package}}
}
\usedir{source/latex/achemso}
\generate{\file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
\usedir{tex/latex/achemso/config}
\generate{\file{achre4.cfg}{\from{\jobname.dtx}{achre4}}
          \file{acbcct.cfg}{\from{\jobname.dtx}{acbcct}}
          \file{ancac3.cfg}{\from{\jobname.dtx}{ancac3}}
          \file{ancham.cfg}{\from{\jobname.dtx}{ancham}}
          \file{bichaw.cfg}{\from{\jobname.dtx}{bichaw}}
          \file{bcches.cfg}{\from{\jobname.dtx}{bcches}}
          \file{bomaf6.cfg}{\from{\jobname.dtx}{bomaf6}}
          \file{bipret.cfg}{\from{\jobname.dtx}{bipret}}
}
\generate{\file{crtoec.cfg}{\from{\jobname.dtx}{crtoec}}
          \file{chreay.cfg}{\from{\jobname.dtx}{chreay}}
          \file{cmatex.cfg}{\from{\jobname.dtx}{cmatex}}
          \file{cgdefu.cfg}{\from{\jobname.dtx}{cgdefu}}
          \file{enfuem.cfg}{\from{\jobname.dtx}{enfuem}}
          \file{esthag.cfg}{\from{\jobname.dtx}{esthag}}
          \file{iecred.cfg}{\from{\jobname.dtx}{iecred}}
          \file{inoraj.cfg}{\from{\jobname.dtx}{inoraj}}
}
\generate{\file{jafcau.cfg}{\from{\jobname.dtx}{jafcau}}
          \file{jacsat.cfg}{\from{\jobname.dtx}{jacsat}}
          \file{jceaax.cfg}{\from{\jobname.dtx}{jceaax}}
          \file{jcisd8.cfg}{\from{\jobname.dtx}{jcisd8}}
          \file{jctcce.cfg}{\from{\jobname.dtx}{jctcce}}
          \file{jcchff.cfg}{\from{\jobname.dtx}{jcchff}}
          \file{jmcmar.cfg}{\from{\jobname.dtx}{jmcmar}}
          \file{jnprdf.cfg}{\from{\jobname.dtx}{jnprdf}}
}
\generate{\file{joceah.cfg}{\from{\jobname.dtx}{joceah}}
          \file{jpcafh.cfg}{\from{\jobname.dtx}{jpcafh}}
          \file{jpcbfk.cfg}{\from{\jobname.dtx}{jpcbfk}}
          \file{jpccck.cfg}{\from{\jobname.dtx}{jpccck}}
          \file{jprobs.cfg}{\from{\jobname.dtx}{jprobs}}
          \file{langd5.cfg}{\from{\jobname.dtx}{langd5}}
          \file{mamobx.cfg}{\from{\jobname.dtx}{mamobx}}
          \file{mpohbp.cfg}{\from{\jobname.dtx}{mpohbp}}
}
\generate{\file{nalefd.cfg}{\from{\jobname.dtx}{nalefd}}
          \file{orlef7.cfg}{\from{\jobname.dtx}{orlef7}}
          \file{oprdfk.cfg}{\from{\jobname.dtx}{oprdfk}}
          \file{orgnd7.cfg}{\from{\jobname.dtx}{orgnd7}}
}
\nopreamble\nopostamble
\usedir{bibtex/bst/achemso}
\generate{\file{achemso.bst}{\from{\jobname.dtx}{bst}}
          \file{biochem.bst}{\from{\jobname.dtx}{bst,bio}}
}
\nopreamble\nopostamble
\usedir{doc/latex/achemso}
\generate{\file{achemso.bib}{\from{\jobname.dtx}{refs}}
}
\nopreamble\nopostamble
\usedir{doc/latex/achemso}
\generate{\file{README.txt}{\from{\jobname.dtx}{readme}}
          \file{achemso-demo.tex}{\from{\jobname.dtx}{demo}}
}
\endbatchfile
%</install>
%<*readme>
----------------------------------------------------------------
achemso --- Support for submissions to American Chemical
 Society journals
Maintained by Joseph Wright
E-mail: joseph.wright@morningstar2.co.uk
Originally developed by Mats Dahlgren
 (c) 1996-98 by Mats Dahlgren
 (c) 2007-2009 Joseph Wright
Released under the LaTeX Project Public license v1.3c or later
See http://www.latex-project.org/lppl.txt

Part of this bundle is derived from cite.sty, to which the
following license applies:
  Copyright (C) 1989-2003 by Donald Arseneau
  These macros may be freely transmitted, reproduced, or
  modified provided that this notice is left intact.
----------------------------------------------------------------

The achemso bundle provides a LaTeX class file and BibTeX style
file in accordance with the requirements of the American
Chemical Society.  The files can be used for any documents, but
have been carefully designed and tested to be suitable for
submission to ACS journals.

The bundle also includes the natmove package.  This package is
loaded by achemso, and provides automatic moving of superscript
citations after punctuation.
%</readme>
%<*ignore>
\fi
% Will Robertson's trick
\immediate\write18{bibtex8 --wolfgang \jobname}
\immediate\write18{makeindex -s gind.ist -o \jobname.ind  \jobname.idx}
\immediate\write18{makeindex -s gglo.ist -o \jobname.gls  \jobname.glo}
%</ignore>
%<*driver>
\PassOptionsToClass{a4paper}{article}
\documentclass[german,english,UKenglish]{ltxdoc}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
%\OnlyDescription
\usepackage{jawltxdoc}
\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
%\CheckSum{1709}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%\GetFileInfo{\jobname.sty}
%
%\DoNotIndex{\@Esphack,\@afterindentfalse,\@afterindenttrue}
%\DoNotIndex{\@author@i,\@auxout,\@biblabel,\@bsphack,\@citex}
%\DoNotIndex{\@currenvir,\@empty,\@evenfoot,\@evenhead,\@firstoftwo}
%\DoNotIndex{\@floatboxreset,\@fnsymbol,\@for,\@gobble}
%\DoNotIndex{\@ifclassloaded,\@ifmtarg,\@ifpackageloaded,\@ifstar}
%\DoNotIndex{\@ifundefined,\@ignorefalse,\@m,\@maketitle,\@ne}
%\DoNotIndex{\@oddfoot,\@oddhead,\@onlypreamble,\@roman}
%\DoNotIndex{\@secondoftwo,\@secpenalty,\@shorttitle,\@ssect}
%\DoNotIndex{\@startsection,\@tempskipa,\@title,\active,\addpenalty}
%\DoNotIndex{\addvspace,\advance,\AtBeginDocument,\begin}
%\DoNotIndex{\begingroup,\bfseries,\bot,\catcode,\centering}
%\DoNotIndex{\citation,\cite,\citenum,\citenumfont,\ClassError}
%\DoNotIndex{\ClassInfo,\ClassWarning,\csname,\dagger,\ddagger}
%\DoNotIndex{\def,\define@boolkeys,\define@choicekey,\define@cmdkeys}
%\DoNotIndex{\do,\document,\doublespacing,\edef,\else,\end}
%\DoNotIndex{\endcsname,\endgroup,\endinput,\ensuremath,\everypar}
%\DoNotIndex{\expandafter,\fi,\figurename,\floatname}
%\DoNotIndex{\floatplacement,\floatstyle,\footnotetext}
%\DoNotIndex{\frenchspacing,\futurelet,\g@addto@macro,\gdef}
%\DoNotIndex{\global,\hbox,\hfil,\if@filesw,\if@ignore,\if@nobreak}
%\DoNotIndex{\if@noskipsec,\ifcase,\ifcsname,\ifdim,\iffalse,\ifnum}
%\DoNotIndex{\ifx,\ignorespaces,\immediate,\InputIfFileExists}
%\DoNotIndex{\itshape,\jobname,\kv@set@family@handler,\kvsetkeys}
%\DoNotIndex{\labelformat,\LARGE,\large,\lastskip,\leavevmode}
%\DoNotIndex{\let,\LoadClass,\lowercase,\m@ne,\maketitle}
%\DoNotIndex{\mathchardef,\mathsection,\MessageBreak,\NeedsTeXFormat}
%\DoNotIndex{\newcommand,\newcount,\newfloat,\newif,\newpage}
%\DoNotIndex{\newwrite,\nocite,\null,\openout,\or,\PackageError}
%\DoNotIndex{\PackageInfo,\PackageWarning,\pagestyle,\par}
%\DoNotIndex{\ProcessOptionsX,\protected@edef,\ProvidesClass}
%\DoNotIndex{\ProvidesFile,\ProvidesPackage,\relax}
%\DoNotIndex{\renewcommand,\RequirePackage,\reset@font}
%\DoNotIndex{\restylefloat,\schemename,\section,\setbox,\setkeys}
%\DoNotIndex{\sf,\sfcode,\sffamily,\skip@,\space,\spacefactor}
%\DoNotIndex{\string,\subsection,\subsubsection,\tablename,\textit}
%\DoNotIndex{\textsuperscript,\textwidth,\the,\thepage,\truncate}
%\DoNotIndex{\tw@,\unskip,\url,\UrlFont,\value,\vskip,\wd,\write}
%\DoNotIndex{\xdef,\z@}
%
%\DoNotIndex{\@firstofone,\aftergroup}
%
%\DoNotIndex{\nmv@citetrue,\nmv@citex,\nmv@ifmtarg}
%
%\changes{v1.0}{1998/06/01}{Initial release of package by Mats
%   Dahlgren}
%\changes{v2.0}{2007/01/17}{Re-write of package by Joseph Wright}
%\changes{v3.0}{2008/07/20}{Second re-write, converting to a class
%  and giving much tighter integration with \textsc{acs} submission
%  system}
%
%\setkeys{lst}{language=[LaTeX]{TeX},moretexcs={bibnote,email,%
%  affiliation,altaffiliation,alsoaffiliation}}
%
%\title{\currpkg\ ---  Support for submissions to American
%  Chemical Society journals^^A
%  \thanks{This file describes version \fileversion, last revised
%    \filedate.}}
%\author{Joseph Wright^^A
%  \thanks{E-mail: joseph.wright@morningstar2.co.uk}}
%\date{Released \filedate}
%
%\maketitle
%
%\newcommand*{\ACS}{\textsc{acs}}
%\begin{abstract}
% The \currpkg bundle provides a \LaTeX\ class file and \BibTeX\
% style file in accordance with the requirements of the American
% Chemical Society.  The files can be used for any documents, but
% have been carefully designed and tested to be suitable for
% submission to \ACS\ journals.
%
% The bundle also includes the \pkg{natmove} package.  This package
% is loaded by \currpkg, and provides automatic moving of superscript
% citations after punctuation.
%\end{abstract}
%
%\begin{multicols}{2}
%  \tableofcontents
%\end{multicols}
%
%\section{Introduction}
%\newcommand*{\REVTeX}{REV\TeX4}
% Support for \BibTeX\ bibliography following the requirements of the
% American Chemical Society (\ACS), along with a package to make
% these easy to  have been available since version one of \currpkg.
% The re-write from version 1 to version 2 made a number of
% improvements to the package, and also added a number of new
% features.  However, neither version one nor version two of the
% package was targeted directly at use for submissions to \ACS\
% journals.  This new release of \currpkg addresses this issue.
%
% The bundle consists of four parts.  The first is a \LaTeXe\ class,
% intended for use in submissions.  It is based on the standard
% \pkg{article} class, but makes various changes to facilitate ease
% of use.  The second part is the \LaTeX\ package, which is loaded by
% the class.  The package contains the parts of the bundle which
% might be appropriate for use with other document
% classes.\footnote{For example, when writing a thesis.}  Thirdly,
% two \BibTeX\ style files are included.  These are used by both the
% class and the package, but can be used directly if desired.
% Finally, an example document is included; this is intended to act a
% potential template for submission, and illustrates the use of the
% class file.
%
%\section{The class file}
% The class file has been designed for use in submitting journals to
% the \ACS. It uses all of the modifications described here (those in
% the package as well as those in the class).  The accompanying
% example manuscript can be used as a template for the correct use of
% the class file.  It is intended to act as a model for submission.
%
% When submitting communications to \emph{J.~Am.\ Chem.\ Soc.}, the
% class will automatically lay the document out in the publication
% style. This allows the author to judge the length of text submitted
% more accurately.  Changing the \opt{manuscript} in the
% demonstration document to \opt{communication} will illustrate the
% effect.
%
%\subsection{Class options}
%\DescribeOption{journal}
% The class supports a limited number of options, which are
% specifically-targeted at submission.  The class uses the
% \pkg{keyval} system for options, in the form \opt{key=value}. The
% most important option is \opt{journal}.  This is the name of the
% target journal for the publication.  The package is designed such
% that the choice of journal will set up the correct bibliography
% style and so on.  The journals currently recognised by the package
% are summarised in \ref{tbl:journal}.  If an unknown journal
% is specified, the package will fall-back on the
% \opt{journal=jacsat} option.
%\begin{table}
%  \centering
%  \begin{tabular}{>{\itshape}l>{\ttfamily}l}
%    \toprule
%    Journal & Setting \\
%    \midrule
%    Acc.\ Chem.\ Res.        & achre4 \\
%    ACS Chem.\ Biol.         & acbcct \\
%    ACS Nano                 & ancac3 \\
%    Anal.\ Chem.             & ancham \\
%    Biochemistry             & bichaw \\
%    Bioconjugate Chem.       & bcches \\
%    Biomacromolecules        & bomaf6 \\
%    Biotechnol.\ Prog.       & bipret \\
%    Chem.\ Res.\ Toxicol.    & crtoec \\
%    Chem.\ Rev.              & chreay \\
%    Chem.\ Mater.            & cmatex \\
%    Cryst.\ Growth Des.      & cgdefu \\
%    Energy Fuels             & enfuem \\
%    Environ.\ Sci.\ Technol. & esthag \\
%    Ind.\ Eng.\ Chem.\ Res.  & iecred \\
%    Inorg.\ Chem.            & inoraj \\
%    J.~Agric.\ Food Chem.    & jafcau \\
%    J.~Chem.\ Eng.\ Data     & jceaax \\
%    J.~Chem.\ Inf.\ Model.   & jcisd8 \\
%    J.~Chem.\ Theory Comput. & jctcce \\
%    J.~Comb.\ Chem.          & jcchff \\
%    J.~Med.\ Chem.           & jmcmar \\
%    J.~Nat.\ Prod.           & jnprdf \\
%    J.~Org.\ Chem.           & joceah \\
%    J.~Phys.\ Chem.~A        & jpcafh \\
%    J.~Phys.\ Chem.~B        & jpcbfk \\
%    J.~Phys.\ Chem.~C        & jpccck \\
%    J.~Proteome Res.         & jprobs \\
%    J.~Am.\ Chem.\ Soc.      & jacsat \\
%    Langmuir                 & langd5 \\
%    Macromolecules           & mamobx \\
%    Mol.\ Pharm.             & mpohbp \\
%    Nano Lett.               & nalefd \\
%    Org.\ Lett.              & orlef7 \\
%    Org.\ Proc.\ Res.\ Dev.  & oprdfk \\
%    Organometallics          & orgnd7 \\
%    \bottomrule
%  \end{tabular}
%  \caption{Values for \opt{journal} option}
%  \label{tbl:journal}
%\end{table}
%
%\DescribeOption{manuscript}
% The second option is the \opt{manuscript} option. This specifies
% the type of paper in the manuscript.  The values here are
% \opt{article}, \opt{note}, \opt{communication}, \opt{review},
% \opt{letter} and \opt{perspective}. The valid values will depend on
% the value of \opt{journal}.  The \opt{manuscript} option determines
% whether sections and an abstract are valid.  The value
% \opt{suppinfo} is also available for supporting information.
%
% Other options are provided by the package, but when used with the
% class these are silently ignored.
%
%\subsection{Manuscript meta-data}
%\DescribeMacro{\title}
% When using the \currpkg class, the \cs{title} macro takes an
% optional argument.  This is intended for a short version of the
% title, for use in running headers.  The title in the running
% headers is designed to ensure that print-outs of the manuscript are
% easily identified.
%
%\DescribeMacro{\author}
%\DescribeMacro{\affiliation}
%\DescribeMacro{\alsoaffiliation}
%\changes{2008/11/08}{v3.1}{Added \cs{alsoaffiliation} macro}
%\DescribeMacro{\altaffiliation}
%\DescribeMacro{\email}
% Inspired by \REVTeX, the \currpkg class alters the method for
% adding author information to the manuscript.  Each author should be
% given as a separate \cs{author} command.  These should be followed
% by an \cs{affiliation}, which applies to the preceding authors. The
% \cs{affiliation} macro takes an optional argument, for a short
% version of the affiliation.\footnote{This will usually be the
% university or company name.}  At least one author should be
% followed by an \cs{email} macro, containing contact details.  All
% authors with an e-mail address are automatically marked with a
% star.  The example manuscript demonstrates the use of all of these
% macros. Notice that \cs{alsoaffiliation} is used when one (or more) 
% authors work at multiple institutions, while \cs{altaffiliation}
% is intended for previous addresses (or other notes). Only
% \cs{affiliation} applies to multiple authors: both 
% \cs{alsoaffiliation} and \cs{altaffiliation} are set on a per
% author basis.
%\begin{LaTeXexample}[noexample]
%  \author{Author Person}
%  \author{Second Bloke}
%  \email{second.bloke@some.place}
%  \affiliation[University of Sometown]
%    {University of Somewhere, Sometown, USA}
%  \altaffiliation
%    {Previous address: Minute University, Nowhereville, USA}
%  \author{Indus Trialguy}
%  \email{i.trialguy@sponsor.co}
%  \affiliation[SponsoCo]
%    {Research Department, SponsorCo, BigCity, USA}
%  \alsoaffiliation{University of Somewhere, Sometown, USA}
%\end{LaTeXexample}
%
%\DescribeMacro{\and}
%\DescribeMacro{\thanks}
% The method used for setting the meta-data means that the normal
% \cs{and} and \cs{thanks} macros are not appropriate in the \currpkg
% class.  Both produce a warning if used.
%
% The meta-data items should be given in the preamble to the \LaTeX\
% file, and no \cs{maketitle} macro is required in the document body.
% This is all handled by the class file directly.  At least one
% author, affiliation and e-mail address must be specified.
%
%\subsection{Bibliography notes}
%\DescribeMacro{\bibnote}
% By loading the \pkg{notes2bib} package, the class provides the
% \cs{bibnote} macro.  This is intended for addition of notes to the
% bibliography (references).  The macro accepts a single argument,
% which is transferred to the bibliography by \BibTeX.
%\begin{LaTeXexample}
%  Some text \bibnote{This note text will be in
%    the bibliography}.
%\end{LaTeXexample}
%
%\subsection{Floats}
%\DescribeEnv{scheme}
%\DescribeEnv{chart}
%\DescribeEnv{graph}
% The class defines three new floating environments: \texttt{scheme},
% \texttt{chart} and \texttt{graph}.\footnote{This is done in the
% class as life is complex for packages due to differing mechanisms
% in \pkg{memoir} and \textsc{koma}-script.}  These can be used as
% expected to include graphical content.  The placement of these new
% floats and the standard \texttt{table} and \texttt{figure} floats
% is altered to be ``here'' if possible.  The contents of all floats
% is automatically horizontally centred on the page.
%
% Cross-referencing to floats automatically includes the name of the
% floating environment.  For example, \texttt{\cs{ref}\{table:one\}}
% will yield ``Table~1'' without the user adding the ``Table'' part.
%
%\subsection{Special sections}
%
%\DescribeEnv{acknowledgement}
%\DescribeEnv{suppinfo}
% The sections for acknowledgements and supporting information
% have dedicated environments available.  These ensure that
% the section headings are generated, and that the text is
% sized corrected when using creating a JACS Communication.
%\begin{LaTeXexample}[noexample]
%  \begin{acknowldegment}
%    The authors thank A.N.~Other.
%   \end{acknowldegment}
%
%   \begin{suppinfo}
%     Full characterization data for all new compounds.
%     This material is available for download from
%     \url{http://pubs.acs.org}
%   \end{suppinfo}
%\end{LaTeXexample}
%
%\section{The package file}
% The package file is loaded by the class, but can also be loaded
% independently. The class contains only items focussed on
% submission; more generally-useful items are stored in the package.
%
%\subsection{Altering the behaviour of \pkg{natbib}}
% \currpkg comes with the \pkg{natmove} package, which adds
% \pkg{cite}-like functionality to \pkg{natbib}.\footnote{The code is
% a copy from \pkg{cite} with minor modifications.}  Thus citations
% may be made using all of the \pkg{natbib} commands
% (\cs{citeauthor}, \cs{citeyear}, \etc).  For superscript citations,
% the number will be moved after punctuation as needed.  The user
% should therefore write citations suitable for ``in line'' use and
% leave the positioning to the package.
%\begin{LaTeXexample}
%  Some text \cite{Coghill2006} some more text.\\
%  Some text ending a sentence \cite{Coghill2006}.
%\end{LaTeXexample}
%
%\subsection{Package options}
% The \opt{journal} and \opt{manuscript} options have no effect when
% using the package without the class.  Instead, the user can control
% various aspects of the behaviour of the package
% directly.\footnote{Using the package alone probably means a report
% or thesis is being written, and so prescriptive application of
% journal style is not appropriate.}  The options all relate to
% aspects of reference handling.
%
%\DescribeOption{super}
% The \opt{super} option affects the handling of superscript
% reference markers.  The option switches this behaviour
% on and off (and takes Boolean values: \opt{super=true} and
% \opt{super=false} are valid).
%
%\DescribeOption{maxauthors}
%\DescribeOption{usetitle}
% The \opt{maxauthors} and \opt{usetitle} options change the output
% of the \BibTeX\ style files.  \opt{maxauthors} is the number of
% authors allowed before truncation to ``et~al.'' occurs.  The
% default is 15, but can be increased (for example for supplementary
% information).  Using the value 0 means that all authors will be
% added to the list.  The \opt{usetitle} option is a Boolean, and
% sets whether the title of a paper referenced appears in the
% bibliography.  The default is \opt{usetitle=false}.
%
%\DescribeOption{biblabel}
% Redefining the formatting of the numbers used in the bibliography
% usually requires modifying internal \LaTeX\ macros.  The
% \opt{biblabel} option makes these changes more accessible: valid
% values are \opt{plain} (use the number only), \opt{brackets}
% (surround the number in brackets) and \opt{period} or
% \opt{fullstop} (follow the number by a full stop/period).
%
%\DescribeOption{biochemistry}
%\DescribeOption{biochem}
% Most \ACS\ journals use the same bibliography style, with the only
% variation being the inclusion of article titles.  However, a small
% number of journals use a rather different style; the journal
% \emph{Biochemistry} is probably the most prominent.  The
% \opt{biochemistry} or \opt{biochem} option uses the style of
% \emph{Biochemistry} for the bibliography, rather than the normal
% \ACS\ style.  For this style, the \opt{usetitle=true} option is the
% default.\footnote{More accurately, the default built into the
% \BibTeX\ style file is to use article titles with the
% \emph{Biochemistry} style.}
%
%\section{The \texorpdfstring{\BibTeX}{BibTeX} style files}
% \currpkg is supplied with two style files, \file{achemso.bst} and
% \file{biochem.bst}.  The direct use of these without the \currpkg
% package file is not recommended, but is possible.  The style files
% can be loaded in the usual way, with a \cs{bibliographystyle}
% command.  The \pkg{natbib} and \pkg{micteplus} packages must be
% loaded by the \LaTeX\ file concerned, if the \pkg{achemso} package
% is not in use.
%
% The \BibTeX\ style files implement the bibliographic style
% specified by the \ACS\ in \emph{The ACS Style Guide}
% \cite{Coghill2006}.  By default, article titles are not included in
% output using the \file{achemso.bst} file, but are with the
% \file{biochem.bst} file.
%
%\StopEventually{%
%  \PrintChanges
%  \PrintIndex
%  \bibliography{achemso}}
%
%\iffalse
%<*class>
%\fi
%\section{The class file}
%\subsection{Setup code}
%\changes{v3.1}{2008/08/27}{Package loading re-ordered}
% The first task of the class is the usual identification.
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\LoadClass[12pt]{article}
\ProvidesClass{achemso}
  [2009/02/03 v3.1a Submissions to ACS journals]
\RequirePackage[etex=false]{notes2bib}[2008/06/21]
\RequirePackage[margin=2.54cm]{geometry}
\RequirePackage[T1]{fontenc}
\RequirePackage[scaled=0.90]{helvet}
\RequirePackage{mathptmx,courier,setspace,graphicx,truncate,
  float,varioref,url,caption}
\AtBeginDocument{\doublespacing}
%    \end{macrocode}
%
%\subsection{Meta-data changes}
%\begin{macro}{\title}
%\begin{macro}{\@title}
%\begin{macro}{\acs@title}
%\begin{macro}{\@shorttitle}
% For the meta-data, the \REVTeX\ bundle provides a good model for
% the commands to give the author.  First of all, the \cs{title}
% macro is given an optional argument.  \cs{gdef} is used here to
% avoid any odd grouping issues.  The various title macros are all
% ``trapped'' in the preamble.  As the argument of \cs{title} is
% needed in the document body, \cs{acs@title} is defined to store it
% without deletion.
%    \begin{macrocode}
\renewcommand*{\title}[2][]{%
  \gdef\@title{#2}%
  \gdef\acs@title{#2}%
  \gdef\@shorttitle{#1}}
\@onlypreamble\title
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@authorcnt}
%\begin{macro}{\acs@affilcnt}
%\begin{macro}{\acs@altaffilcnt}
% Still following \REVTeX, the \cs{author} macro is redefined.  In
% this way, each author is given as a separate \cs{author} argument.
%    \begin{macrocode}
\newcount\acs@authorcnt
\newcount\acs@affilcnt
\newcount\acs@altaffilcnt
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\changes{v3.1}{2008/09/28}{Meta-data system redesigned}
%\begin{macro}{\author}
% The author macro stores the current author details and sets the
% affiliation of the author to the current one. Everything is
% \cs{global} so that there is no possibility of begin trapped inside a
% group. The affiliation counter is always one behind, and so it is
% locally incremented to keep the logic of the code clear elsewhere.
%    \begin{macrocode}
\renewcommand*{\author}[1]{%
  \global\advance\acs@authorcnt\@ne\relax
  \expandafter\gdef\csname @author@\@roman\the\acs@authorcnt\endcsname
    {#1}%
  \begingroup
    \advance\acs@affilcnt\@ne
    \expandafter\xdef\csname @author@affil@\@roman\the\acs@authorcnt
      \endcsname
      {\the\acs@affilcnt}%
  \endgroup
}
\@onlypreamble\author
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\and}
%\begin{macro}{\thanks}
% Neither \cs{and} nor \cs{thanks} are used by the document class.
%    \begin{macrocode}
\renewcommand*{\and}{%
  \ClassError{achemso}{\string\and\space not supported}
    {The achemso class does not use \string\and
     \MessageBreak see the documentation for details}}
\renewcommand*{\thanks}[1]{%
  \ClassError{achemso}{\string\thanks\space not supported}
    {The achemso class does not use \string\thanks
     \MessageBreak see the documentation for details}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\affiliation}
% As with \cs{author}, everything is \cs{global} just in case. The
% system insists that affiliations come after authors. Before anything
% is committed, a check is made that the affiliation has not already
% been seen.
%    \begin{macrocode}
\newcommand*{\affiliation}[2][\relax]{%
  \ifnum\acs@authorcnt>\z@\relax
    \acs@affil@ifdup{#2}{%
      \acs@affil@swap{#2}%
    }{%
      \global\advance\acs@affilcnt\@ne
      \expandafter\gdef\csname @address@\@roman\acs@affilcnt
        \endcsname{#2}%
      \ifx\relax#1\relax
        \expandafter\gdef\csname @affil@\@roman\acs@affilcnt
          \endcsname{#2}%
      \else
        \expandafter\gdef\csname @affil@\@roman\acs@affilcnt
          \endcsname{#1}%
      \fi
    }%
  \else
    \ClassWarning{achemso}
      {Affiliation with no author}%
  \fi}
\@onlypreamble\affiliation
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\acs@affil@ifdup}
%\begin{macro}{\acs@affil@ifdup@aux}
% A short test for two addresses being identical.
%    \begin{macrocode}
\newcommand*{\acs@affil@ifdup}[1]{%
  \begingroup
    \def\acs@tempa{#1}%
    \acs@switchfalse
    \acs@tempcnta\z@\relax
    \acs@affil@ifdup@aux
    \ifacs@switch
      \aftergroup\@firstoftwo
    \else
      \aftergroup\@secondoftwo
    \fi
    \endgroup
}
\newcommand*{\acs@affil@ifdup@aux}{%
  \advance\acs@tempcnta\@ne\relax
  \expandafter\expandafter\expandafter\def\expandafter\expandafter
    \expandafter\acs@tempb\expandafter\expandafter\expandafter
    {\csname @address@\@roman\acs@tempcnta\endcsname}%
  \ifx\acs@tempa\acs@tempb
    \expandafter\acs@switchtrue
  \else
    \ifnum\acs@tempcnta<\acs@affilcnt\relax
      \expandafter\expandafter\expandafter\acs@affil@ifdup@aux
    \fi
  \fi
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@affil@swap}
%\begin{macro}{\acs@affil@swap@aux}
% If the affiliation has already been given, then all of the authors
% need to be checked to make sure that the correct affiliation is used.
% First, the loop from above is used to find the correct number for the
% duplicate.
%    \begin{macrocode}
\newcommand*{\acs@affil@swap}[1]{%
  \begingroup
    \def\acs@tempa{#1}%
    \acs@tempcnta\z@\relax
    \acs@tempcntb\z@\relax
    \acs@affil@ifdup@aux
    \advance\acs@affilcnt\@ne\relax
    \acs@affil@swap@aux
  \endgroup
}
\newcommand*{\acs@affil@swap@aux}{%
  \advance\acs@tempcntb\@ne\relax
  \expandafter\ifnum\csname @author@affil@\@roman
    \acs@tempcntb\endcsname = \acs@affilcnt\relax
    \expandafter\xdef\csname @author@affil@\@roman
      \acs@tempcntb\endcsname{\the\acs@tempcnta}%
  \fi
  \ifnum\acs@tempcntb<\acs@authorcnt\relax
    \expandafter\acs@affil@swap@aux
  \fi
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\alsoaffiliation}
%\begin{macro}{\acs@alsoaffil@find}
% To allow complex affiliations , two commands are needed. The first
% deals with affiliations that are in some way shared by several 
% authors. This is tracked on a per author basis.
%    \begin{macrocode}
\newcommand*{\alsoaffiliation}[2][\relax]{%
  \ifnum\acs@authorcnt>\z@\relax
    \acs@affil@ifdup{#2}{%
      \acs@alsoaffil@find{#2}%
    }{%
      \global\advance\acs@affilcnt\@ne
      \acs@tempcnta\acs@affilcnt\relax
      \expandafter\gdef\csname @address@\@roman\acs@affilcnt
        \endcsname{#2}%
      \ifx\relax#1\relax
        \expandafter\gdef\csname @affil@\@roman\acs@affilcnt
          \endcsname{#2}%
      \else
        \expandafter\gdef\csname @affil@\@roman\acs@affilcnt
          \endcsname{#1}%
      \fi
    }%
    \@ifundefined{@author@alsoaffil@\@roman\acs@authorcnt}{%
      \expandafter\xdef\csname @author@alsoaffil@\@roman\acs@authorcnt
        \endcsname{\the\acs@tempcnta}%
    }{%
      \expandafter\xdef\csname @author@alsoaffil@\@roman\acs@authorcnt
        \endcsname{\csname @author@alsoaffil@\@roman\acs@authorcnt
          \endcsname,\the\acs@tempcnta}%
    }
  \else
    \ClassWarning{achemso}
      {Affiliation with no author}%
  \fi}
\newcommand*{\acs@alsoaffil@find}[1]{%
  \begingroup
    \def\acs@tempa{#1}%
    \acs@tempcnta\z@\relax
    \acs@tempcntb\z@\relax
    \acs@affil@ifdup@aux
  \expandafter\endgroup
  \expandafter\acs@tempcnta\the\acs@tempcnta\relax
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\altaffiliation}
% For the alternative affiliation, a second count is kept, and the
% affiliation is ``attached'' to the author.
%    \begin{macrocode}
\newcommand*{\altaffiliation}[1]{%
  \ifnum\acs@authorcnt>\z@\relax
    \global\advance\acs@altaffilcnt\@ne\relax
    \expandafter\gdef\csname @altaffil@\@roman\acs@authorcnt
      \endcsname{#1}%
    \expandafter\xdef\csname @author@altaffil@\@roman\acs@authorcnt
      \endcsname{\the\acs@altaffilcnt}%
  \else
    \ClassWarning{achemso}
      {Affiliation with no author}%
  \fi}
\@onlypreamble\altaffiliation
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\email}
% E-mail addresses are attached to authors as well.
%    \begin{macrocode}
\newcommand*{\email}[1]{%
  \ifnum\acs@authorcnt>\z@\relax
    \expandafter\gdef\csname @email@\@roman\acs@authorcnt
      \endcsname{#1}%
  \else
    \ClassWarning{achemso}
      {E-mail with no author}%
  \fi}
\@onlypreamble\email
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@maketitle}
%\changes{v3.0a}{2008/08/21}{Skips footnotes for a single
%  institution}
%\changes{v3.1}{2008/08/28}{Slightly simplified code}
% With the changes outlined above in place, a new \cs{@maketitle}
% macro is needed.  This is partially a copy of the existing, but
% rather heavily modified.
%    \begin{macrocode}
\renewcommand*{\@maketitle}{%
  \ifnum\acs@authorcnt<\z@\relax
    \ClassError{achemso}{No authors defined}
      {At least one author is required}%
  \fi
  \newpage
  \null
  \vskip 2em%
  \begin{center}%
    {\LARGE\bfseries\sffamily
     \renewcommand*{\acs@tempa}{suppinfo}%
     \ifx\acs@manuscript\acs@tempa
       Supporting information for:
     \fi
     \@title \par}%
    \vskip 1.5em\relax
    {\large\sffamily\frenchspacing \acs@authorlist}%
    \vskip 1em%
    {\itshape\acs@addresslist}%
    \vskip 1em\relax
    {\sffamily E-mail: \acs@emaillist}%
  \end{center}
  \par
  \vskip 1.5em\relax}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@thanks}
%\changes{v3.1}{2008/08/29}{Moved footnote generation
%  to \cs{@thanks} macro}
% The \cs{@thanks} macro is used as a hook to generate the footnotes if
% needed.
%    \begin{macrocode}
\renewcommand*{\@thanks}{%
  \ifnum\acs@affilcnt>\@ne\relax
    \acs@affilfoot
  \else
    \ifnum\acs@altaffilcnt>\z@\relax
      \acs@affilfoot
    \fi
  \fi}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\acs@authorlist}
%\begin{macro}{\acs@authorlist@aux}
%\begin{macro}{\acs@authorlist@email}
%\begin{macro}{\acs@authorlist@also}
%\begin{macro}{\acs@authorlist@alt}
%\changes{v3.0a}{2008/08/21}{Skips footnotes for a single institution}
% Printing the author list needs to do several things. The appropriate
% separators between authors are created and the author names
% themselves are printed.
%    \begin{macrocode}
\newcommand*{\acs@authorlist}{%
  \acs@tempcnta\z@\relax
  \acs@tempcntb\acs@affilcnt\relax
  \ifnum\acs@authorcnt=\z@\relax
    \ClassError{achemso}{No authors given}
      {No authors were specified for the paper}%
  \else
    \expandafter\acs@authorlist@aux
  \fi}
\newcommand*{\acs@authorlist@aux}{%
  \advance\acs@tempcnta\@ne\relax
  \def\acs@tempa{}%
  \ifnum\acs@authorcnt=\@ne\relax\else
    \ifnum\acs@tempcnta=\acs@authorcnt\relax
      \space and%
    \fi
  \fi
  \space
  \csname @author@\@roman\acs@tempcnta\endcsname
  \ifnum\acs@tempcnta<\acs@authorcnt
    ,%
  \fi
  \begingroup
    \@ifundefined{@email@\@roman\acs@tempcnta}
      {}
      {\aftergroup\acs@authorlist@email}%
  \endgroup
%    \end{macrocode}
% A check on putting \cs{affiliation} before authors but not after.
%    \begin{macrocode}
  \begingroup
    \expandafter\acs@tempcntb\csname @author@affil@\@roman
      \acs@tempcnta\endcsname\relax
    \@ifundefined{@affil@\@roman\acs@tempcntb}
      {\ClassError{achemso}{Affiliation not given}
       {No affiliation has been given for author\MessageBreak
        \csname @author@\@roman\acs@tempcnta\endcsname}}
      {}%
  \endgroup
%    \end{macrocode}
% If there are at least two affiliations, then a symbol must be
% produced. Of course, if there is only one main affiliation it must
% have symbol one!
%    \begin{macrocode}
  \ifnum\acs@affilcnt>\@ne\relax
    \protected@edef\acs@tempa{%
      \acs@tempa
      \acs@fnsymbol{%
        \csname @author@affil@\@roman\acs@tempcnta\endcsname
      }%
    }%
  \else
    \ifnum\acs@altaffilcnt>\z@\relax
      \protected@edef\acs@tempa{\acs@tempa\acs@fnsymbol{\@ne}}%
    \fi
  \fi
%    \end{macrocode}
% Secondary affiliations that are shared are included.
%    \begin{macrocode}
  \begingroup
    \@ifundefined{@author@alsoaffil@\@roman\acs@tempcnta}
      {}
      {\aftergroup\acs@authorlist@also}%
  \endgroup
%    \end{macrocode}
% To get the correct symbols for the alternative affiliations, a track
% of the number has to be kept.
%    \begin{macrocode}
  \begingroup
    \@ifundefined{@author@altaffil@\@roman\acs@tempcnta}
      {}
      {\aftergroup\acs@authorlist@alt}%
  \endgroup
  \ifx\@empty\acs@tempa\@empty\else
    \textsuperscript{\acs@tempa}%
  \fi
  \ifnum\acs@tempcnta<\acs@authorcnt
    \expandafter\acs@authorlist@aux
  \fi
}
\newcommand*{\acs@authorlist@email}{%
  \protected@edef\acs@tempa{%
    \acs@fnsymbol{\z@}%
    \ifnum\acs@affilcnt>\@ne\relax
      ,%
    \else
      \ifnum\acs@altaffilcnt>\z@\relax
        ,%
      \fi
    \fi
  }%
}
\newcommand*{\acs@authorlist@also}{%
  \expandafter\@for\expandafter\acs@tempb\expandafter:\expandafter
    =\csname @author@alsoaffil@\@roman\acs@tempcnta\endcsname\do{%
    \protected@edef\acs@tempa{%
      \acs@tempa
      ,%
      \acs@fnsymbol{\acs@tempb}%
    }%
  }%
}
\newcommand*{\acs@authorlist@alt}{%
  \advance\acs@tempcntb\@ne\relax
  \protected@edef\acs@tempa{%
    \acs@tempa
    ,%
    \acs@fnsymbol{\acs@tempcntb}%
  }%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@fnsymbol}
%\changes{v3.1}{2008/09/04}{Extended symbols available}
% The ACS have an extended list of symbols.  The star appears at the
% special position zero.
%    \begin{macrocode}
\newcommand*{\acs@fnsymbol}[1]{%
  \ensuremath{\ifcase#1 *\or \dagger\or \ddagger\or \P\or
   \S\or \|\or \bot\or \#\or @\or \triangle\or \nabla\else
   \ClassError{achemso}{Too many affiliations}
     {There are no symbols left: complain to the package
      author}\fi}}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\acs@addresslist}
%\begin{macro}{\acs@addresslist@aux}
% The main address block works in a similar way to the author printing.
%    \begin{macrocode}
\newcommand*{\acs@addresslist}{%
  \ifnum\acs@affilcnt>\z@\relax
    \acs@tempcnta\z@\relax
    \acs@addresslist@aux
  \else
    \ClassError{achemso}{No affiliations}
      {At least one affiliation is needed}%
  \fi}
\newcommand*{\acs@addresslist@aux}{%
  \advance\acs@tempcnta\@ne\relax
  \ifnum\acs@affilcnt>\@ne\relax
    \ifnum\acs@tempcnta=\acs@affilcnt\relax
      and
    \fi
  \fi
  \csname @address@\@roman\acs@tempcnta\endcsname
  \ifnum\acs@tempcnta<\acs@affilcnt\relax
    ,
    \expandafter\acs@addresslist@aux
  \fi
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@affilfoot}
%\begin{macro}{\acs@fnsymbol@org}
%\changes{v3.0a}{2008/08/21}{Fixed bugs in printing affiliations
%  correctly}
%\begin{macro}{\acs@affil@foot}
%\begin{macro}{\acs@altaffil@foot}
%\begin{macro}{\acs@altaffil@foot@aux}
% Footnotes are done in two stages.  First the main affiliation is
% handled, then the possible alternative.
%    \begin{macrocode}
\newcommand*{\acs@affilfoot}{%
  \let\acs@fnsymbol@org\@fnsymbol
  \let\@fnsymbol\acs@fnsymbol
  \acs@tempcnta\z@\relax
  \acs@tempcntb\z@\relax
  \ifnum\acs@affilcnt>\@ne\relax
    \acs@affil@foot
  \else
    \ifnum\acs@altaffilcnt>\z@\relax
      \footnotetext[\@ne]{\@affil@i}%
      \acs@tempcnta\@ne\relax
    \fi
  \fi
  \ifnum\acs@altaffilcnt>\z@\relax
    \acs@altaffil@foot
  \fi
  \let\@fnsymbol\acs@fnsymbol@org}
\newcommand*{\acs@affil@foot}{%
  \advance\acs@tempcnta\@ne\relax
  \footnotetext[\acs@tempcnta]
    {\csname @affil@\@roman\acs@tempcnta\endcsname}%
  \ifnum\acs@tempcnta<\acs@affilcnt\relax
    \expandafter\acs@affil@foot
  \fi}
\newcommand*{\acs@altaffil@foot}{%
  \advance\acs@tempcntb\@ne\relax
  \begingroup
    \@ifundefined{@altaffil@\@roman\acs@tempcntb}
      {}
      {\aftergroup\acs@altaffil@foot@aux}%
  \endgroup
  \ifnum\acs@tempcntb<\acs@authorcnt\relax
    \expandafter\acs@altaffil@foot
  \fi
}
\newcommand*{\acs@altaffil@foot@aux}{%
  \advance\acs@tempcnta\@ne\relax
  \footnotetext[\acs@tempcnta]
    {\csname @altaffil@\@roman\acs@tempcntb\endcsname}%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@emaillist}
%\changes{v3.0a}{2008/08/21}{Fixed error if only one address is given}
%\begin{macro}{\acs@email@list}
% The final piece of meta-data to print is the e-mail address list.
% The total number of e-mail addresses given it counted in
% \cs{acs@tempcntb}, which means a warning can be given if there are
% none.  The group is used so that \cs{UrlFont} can be set correctly.
%    \begin{macrocode}
\newcommand*{\acs@emaillist}{%
  \begingroup
    \renewcommand*{\UrlFont}{\sf}%
    \acs@tempcnta\z@\relax
    \acs@tempcntb\z@\relax
    \acs@email@list
    \expandafter\endgroup\expandafter\acs@tempcntb\number
      \acs@tempcntb\relax
  \ifnum\acs@tempcntb=\z@\relax
    \ClassError{achemso}{No e-mail given}
      {At lest one author must have a contact e-mail}%
  \fi}
\newcommand*{\acs@email@list}{%
  \advance\acs@tempcnta\@ne\relax
  \ifnum\acs@tempcnta>\acs@authorcnt\relax\else
    \begingroup
      \@ifundefined{@email@\@roman\acs@tempcnta}
        {\aftergroup\@gobble}
        {\aftergroup\@firstofone}%
    \endgroup
      {\advance\acs@tempcntb\@ne\relax
       \ifnum\acs@tempcntb>\@ne\relax
%    \end{macrocode}
% The lack of a percent sign here is deliberate.
%    \begin{macrocode}
         ;
       \fi
       \expandafter\expandafter\expandafter\url\expandafter
         \expandafter\expandafter{%
           \csname @email@\@roman\acs@tempcnta\endcsname}}%
    \acs@email@list
  \fi}
%    \end{macrocode}
%\end{macro}
%\end{macro}
% \cs{maketitle} is required by the document class, and must start
% the document.  No variation is allowed, and so it is done
% automatically.
%    \begin{macrocode}
\g@addto@macro{\document}{\maketitle}
%    \end{macrocode}
%
%\subsection{Floats}
%\begin{environment}{scheme}
%\begin{environment}{chart}
%\changes{v3.1}{2008/08/29}{Fixed scheme naming}
%\begin{environment}{graph}
% Three new float types are provided, \texttt{scheme}, \texttt{chart}
% and \texttt{graph}.  These are the most obvious types; for graphs,
% a slight problem arises with the file extension.
%    \begin{macrocode}
\newfloat{scheme}{htbp}{los}
\floatname{scheme}{Scheme}
\newfloat{chart}{htbp}{loc}
\floatname{chart}{Chart}
\newfloat{graph}{htbp}{loh}
\floatname{graph}{Graph}
%    \end{macrocode}
%\end{environment}
%\end{environment}
%\end{environment}
%\begin{macro}{\schemename}
%\begin{macro}{\chartname}
%\begin{macro}{\graphname}
% Naming is set up in the same way as the kernel floats.
%    \begin{macrocode}
\newcommand*{\schemename}{Scheme}
\newcommand*{\chartname}{Chart}
\newcommand*{\graphname}{Graph}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
% The standard floats should appear ``here'' by default.
%    \begin{macrocode}
\floatplacement{table}{htbp}
\floatplacement{figure}{htbp}
\floatstyle{plaintop}
\restylefloat{table}
%    \end{macrocode}
%\begin{macro}{\acs@floatboxreset}
% Floats are all centred.
%    \begin{macrocode}
\let\acs@floatboxreset\@floatboxreset
\renewcommand*{\@floatboxreset}{\centering\acs@floatboxreset}
%    \end{macrocode}
%\end{macro}
% \pkg{varioref} is used to control the appearance of cross-references.
%    \begin{macrocode}
\labelformat{scheme}{\schemename~#1}
\labelformat{chart}{\chartname~#1}
\labelformat{graph}{\graphname~#1}
\labelformat{figure}{\figurename~#1}
\labelformat{table}{\tablename~#1}
%    \end{macrocode}
%
%\subsection{Page headers}
%\begin{macro}{\ps@achemso}
%\begin{macro}{\@oddfoot}
%\begin{macro}{\@oddhead}
% For reviewers, page headers indicating which manuscript the page
% belongs to would be useful.  Rather than load \pkg{fancyhdr}, a
% low-level patch is made to the appropriate command.  This is rather
% simply-minded but gives the desired output.
%    \begin{macrocode}
\newcommand*{\ps@achemso}{%
  \renewcommand*{\@oddfoot}{\reset@font\hfil\thepage\hfil}%
  \let\@evenfoot\@oddfoot
  \renewcommand*{\@oddhead}{%
    \reset@font
    \@author@i
    \ifnum\acs@authorcnt>\@ne\relax
      \space et al.%
    \fi
    \hfil\relax
%    \end{macrocode}
% If the short title is empty, then the main title is used with some
% trimming.  A check is made first, as the \cs{truncate} macro will
% left-align if the text is not actually too long.
%    \begin{macrocode}
    \ifx\@empty\@shorttitle\@empty
      \setbox\z@\hbox{\acs@title}%
      \ifdim\wd\z@>0.45\textwidth\relax
        \truncate{0.45\textwidth}{\acs@title}%
      \else
        \acs@title
      \fi
    \else
      \@shorttitle
    \fi}%
  \let\@evenhead\@oddhead}
\pagestyle{achemso}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{Miscellaneous changes}
% Although \currpkg avoids too much formatting, the class file makes
% a few changes to keep life simple.  The name of the bibliography
% should be ``Notes and References'' if any notes are added.
%    \begin{macrocode}
\renewcommand*{\refname}{%
  \ifnum\the\value{bibnote}>\z@\relax
    Notes and
  \fi References}
%    \end{macrocode}
%
%\subsection{Finalisation}
%\changes{v3.1}{2008/08/28}{Moved loading of \pkg{achemso} package}
% At this stage, the \currpkg package can be loaded. Numbering
% of sections is disabled by default.
%    \begin{macrocode}
\RequirePackage{achemso}
%    \end{macrocode}
%\begin{macro}{\acs@manuscript}
% The article must have a type: if nothing else has been set, then
% ``article'' is used.
%    \begin{macrocode}
\@ifundefined{acs@manuscript}
  {\newcommand*{\acs@manuscript}{article}}{}
%    \end{macrocode}
%\end{macro}
% Some settings are defined by the document type.  At this stage, the
% journal file should have ensured that the type is valid.
%    \begin{macrocode}
\edef\acs@tempa{note}
\ifx\acs@manuscript\acs@tempa
  \acs@killsecs
\fi
\edef\acs@tempa{review}
\ifx\acs@manuscript\acs@tempa
  \acs@restsecnums
\fi
\edef\acs@tempa{suppinfo}
\ifx\acs@manuscript\acs@tempa
  \acs@restsecnums
  \acs@setkeys{maxauthors=0}
\fi
\if@filesw
  \acs@writebib
\fi
%    \end{macrocode}
%
%\iffalse
%</class>
%<*package>
%\fi
%\section{The package file}
%\subsection{Setup code}
% The package file is designed to be usable with any document class.
% It sets up the basics, but leaves some settings to the class file.
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{achemso}
  [2009/02/03 v3.1a Support for ACS journals]
\@ifclassloaded{achemso}{}
  {\PackageInfo{achemso}{When using the achemso bundle
     for\MessageBreak submission of articles to the ACS,
     please\MessageBreak use the achemso document class.}}
\RequirePackage{notes2bib,mciteplus,xkeyval}
%    \end{macrocode}
%\begin{macro}{\acs@tempa}
%\begin{macro}{\acs@tempb}
%\begin{macro}{\acs@tempcnta}
%\begin{macro}{\acs@tempcntb}
%\begin{macro}{\acs@tempcntc}
%\begin{macro}{\ifacs@switch}
% Some scratch macros are defined.
%    \begin{macrocode}
\newcommand*{\acs@tempa}{}
\newcommand*{\acs@tempb}{}
\newcount\acs@tempcnta
\newcount\acs@tempcntb
\newcount\acs@tempcntc
\newif\ifacs@switch
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{Option handling}
%\begin{macro}{\acs@manuscript}
%\begin{macro}{\acs@journal}
%\begin{macro}{\acs@maxauthors}
%\begin{macro}{\ifacs@super}
%\begin{macro}{\ifacs@usetitle}
%\begin{macro}{\ifacs@biochemistry}
% The various keys are defined.
%    \begin{macrocode}
\define@boolkeys[acs]{key}[acs@]{
  abbreviate,
  biochem,
  biochemistry,
  super,
  usetitle}[true]
\let\acs@key@biochem\acs@key@biochemistry
\define@cmdkeys[acs]{key}[acs@]{
  maxauthors,
  journal,
  manuscript}
\define@choicekey*[acs]{key}{biblabel}
  [\acs@tempa\acs@tempb]
  {plain,brackets,fullstop,period}
  {\ifcase\acs@tempb\relax
     \def\@biblabel##1{##1}\or
     \def\@biblabel##1{(##1)}\or
     \def\@biblabel##1{##1.}\or
     \def\@biblabel##1{##1.}\fi}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@setkeys}
% A slight shortcut for setting keys.
%    \begin{macrocode}
\newcommand*{\acs@setkeys}{\setkeys[acs]{key}}
%    \end{macrocode}
%\end{macro}
% Default values for some of the options are set up here, before
% processing.
%    \begin{macrocode}
\acs@setkeys{
  maxauthors=15,
  super=true,
  biblabel=brackets}
\ProcessOptionsX*[acs]<key>
%    \end{macrocode}
%\begin{macro}{\acs@cfgextension}
%\begin{macro}{\acs@prefix}
% A few fixed values are used in several places.
%    \begin{macrocode}
\newcommand*{\acs@cfgextension}{cfg}
\newcommand*{\acs@prefix}{acs-}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\subsection{\opt{type} validation}
%\begin{macro}{\acs@validtype}
% The \opt{type} of manuscript needs to be validated by most journal
% files.  A shortcut is provided here.  This needs to happen before
% support files can be loaded.
%    \begin{macrocode}
\newcommand*{\acs@validtype}[2][article]{%
  \acs@switchfalse
  \@ifundefined{acs@manuscript}
    {\newcommand*{\acs@manuscript}{#1}}
    {\@for\acs@tempa:=#2\do{%
      \ifx\acs@tempa\acs@manuscript
        \acs@switchtrue
      \fi}
    \ifacs@switch\else
      \ClassWarning{achemso}{Invalid manuscript type:
        \MessageBreak changing to #1}%
      \renewcommand*{\acs@manuscript}{#1}%
    \fi}}
%    \end{macrocode}
%\end{macro}
%
%\subsection{Section headings}
%\changes{v3.1}{2008/08/27}{Moved section modification to
%  package}
%\begin{macro}{\acs@orgstartsection}
%\begin{macro}{\acs@startsection}
% The applicable section headings depend on the journal and document
% type.  First, numbering of sections is killed off by default.
%    \begin{macrocode}
\let\acs@orgstartsection\@startsection
\newcommand*{\acs@startsection}[6]{%
  \if@noskipsec \leavevmode \fi
  \par
  \@tempskipa #4\relax
  \@afterindenttrue
  \ifdim\@tempskipa<\z@\relax
    \@tempskipa -\@tempskipa \@afterindentfalse
  \fi
  \if@nobreak
    \everypar{}%
  \else
    \addpenalty\@secpenalty\addvspace\@tempskipa
  \fi
%    \end{macrocode}
% The change is here: a star makes no difference.  \cs{@ifstar} means
% that any star is nicely got rid of.
%    \begin{macrocode}
  \@ifstar
    {\@ssect{#3}{#4}{#5}{#6}}
    {\@ssect{#3}{#4}{#5}{#6}}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@killsecnums}
%\begin{macro}{\acs@restsecnums}
% The business end.
%    \begin{macrocode}
\newcommand*{\acs@killsecnums}{%
  \let\@startsection\acs@startsection}
\newcommand*{\acs@restsecnums}{%
  \let\@startsection\acs@orgstartsection}
\@ifclassloaded{achemso}
  {\acs@killsecnums}
  {}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@section}
%\begin{macro}{\acs@subsection}
% The original definitions are always available.
%    \begin{macrocode}
\let\acs@section\section
\let\acs@subsection\subsection
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@killsecs}
%\begin{macro}{\acs@gobblesection}
%\begin{macro}{\section}
%\begin{macro}{\subsection}
%\begin{macro}{\subsubsection}
% To kill sections entirely, a different approach is needed. The set
% to gobble up the title and if necessary the star.
%    \begin{macrocode}
\newcommand*{\acs@killsecs}{%
  \newcommand*{\acs@gobblesection}{%
    \ClassWarning{achemso}
      {Sections not allowed for this manuscript type}%
    \@ifstar{\@gobble}{\@gobble}}
  \let\section\acs@gobblesection
  \let\subsection\acs@gobblesection
  \let\subsubsection\acs@gobblesection
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\bibsection}
% The bibliography is altered here.
%    \begin{macrocode}
  \AtBeginDocument{
    \renewcommand*{\bibsection}{\acs@section*{\refname}}}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\acknowledgement}
%\changes{v3.1}{2008/08/28}{Converted to environment}
%\begin{macro}{\suppinfo}
%\changes{v3.1}{2008/08/28}{Converted to environment}
% Two macros are provided that will always give the correct
% output.
%    \begin{macrocode}
\newcommand*{\acknowledgement}{%
  \acs@subsection*{\acs@acknowledgement}}
\newcommand*{\suppinfo}{%
  \acs@subsection*{\acs@suppinfo}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\acs@acknowledgement}
%\begin{macro}{\acs@suppinfo}
% The text for the above is held separately.
%    \begin{macrocode}
\newcommand*{\acs@acknowledgement}{Acknowledgement}
\newcommand*{\acs@suppinfo}{Supporting Information Available}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\subsection{Removal of abstract}
%\begin{macro}{\acs@killabstract}
%\begin{macro}{\acs@startgobble}
%\begin{macro}{\acs@endgobble}
%\begin{macro}{\acs@iffalse}
% To disable the abstract, a modified copy of the code from
% \pkg{versions} is used.  This code comes here so that the journal
% support files can call \cs{acs@killabstract} immediately.
%    \begin{macrocode}
\newcommand*{\acs@killabstract}{%
  \let\abstract\acs@startgobble}
\begingroup
  \catcode`{=\active
  \catcode`}=12\relax
  \catcode`(=1\relax
  \catcode`)=2\relax
  \gdef\acs@startgobble(%
    \ClassWarning(achemso)
      (Abstract not allowed for this\MessageBreak
       manuscript type)%
    \@bsphack
    \catcode`{=\active
    \catcode`}=12\relax
    \let\end\fi
    \let{\acs@endgobble%}
    \iffalse)%{
  \gdef\acs@endgobble#1}(%
    \def\acs@tempa(#1)%
    \ifx\acs@tempa\@currenvir
      \@Esphack\endgroup
        \if@ignore
          \global\@ignorefalse\ignorespaces
        \fi
     \else
       \expandafter\acs@iffalse
    \fi)
\endgroup
\newcommand*{\acs@iffalse}{\iffalse}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{Loading appropriate support}
% If the package is being used with the class file, then the options
% \opt{journal} and \opt{type} are used to set up the correct
% settings.
%    \begin{macrocode}
\@ifclassloaded{achemso}
  {\@ifundefined{acs@journal}
     {\ClassInfo{achemso}{No target journal specified:
       \MessageBreak using package defaults}%
%    \end{macrocode}
% The \opt{type} option only applies when a particular journal is
% given as an option.
%    \begin{macrocode}
     \@ifundefined{acs@manuscript}{}
       {\ClassWarning{achemso}{The `type' option is only
          applicable\MessageBreak when the `journal' option is
          also specified}}}%
     {\InputIfFileExists{\acs@journal.\acs@cfgextension}
        {\ClassInfo{achemso}{Loading configuration for
          journal\MessageBreak \acs@journal}}
        {\ClassWarning{achemso}{Unknown journal
          `\acs@journal'}%
         \InputIfFileExists{jacsat.\acs@cfgextension}
           {\ClassInfo{achemso}{Loading jacs
            configuration\MessageBreak as a fall-back}}
           {\ClassError{achemso}{Could not load
             jacsat.cfg}{This is a core file of\MessageBreak
             the achemso bundle: something is wrong with
             \MessageBreak  your installation}}}}}%
%    \end{macrocode}
% If the class is not loaded, then an appropriate warning is given if
% either option is set.
%    \begin{macrocode}
  {\@ifundefined{acs@journal}{}
     {\PackageWarning{achemso}{The `journal' option is only
        applicable\MessageBreak when using the achemso
        document class}}%
   \@ifundefined{acs@manuscript}{}
     {\PackageWarning{achemso}{The `type' option is only
       applicable\MessageBreak when using the achemso
       document class}}}
%    \end{macrocode}
%
%\subsection{Patching \pkg{natbib}}
% As in REV\TeX, the package needs to modify \pkg{natbib} to move
% punctuation before superscript citations.  First, \pkg{natbib} is
% loaded with the \opt{sort\&compress} option active.
%    \begin{macrocode}
\ifacs@super
  \RequirePackage[sort&compress,numbers,super]{natbib}
\else
  \RequirePackage[sort&compress,numbers,round]{natbib}
\fi
\RequirePackage{natmove}
%    \end{macrocode}
%\begin{macro}{\nmv@activate}
%\begin{macro}{\nmv@natcitex}
%\begin{macro}{\nmv@cite}
%\begin{macro}{\cite}
% The \pkg{natmove} package is slightly patched to get automatic
% bibnotes.  This is true for superscript and standard citations.
%    \begin{macrocode}
\renewcommand*{\nmv@activate}{%
  \let\nmv@natcitex\@citex
  \let\@citex\nmv@citex
  \let\nmv@cite\cite
  \renewcommand*{\cite}[2][]{%
    \nmv@ifmtarg{##1}
      {\nmv@citetrue
       \nmv@cite{##2}}
      {\nocite{##2}%
       \bibnote{Ref.~\citenum{##2}, ##1}}}}
\renewcommand*{\nmv@notactivate}{%
  \let\nmv@cite\cite
  \renewcommand*{\cite}[2][]{%
    \nmv@ifmtarg{##1}
      {\nmv@cite{##2}}
      {\nocite{##2}%
       \bibnote{Ref.~\citenum{##2}, ##1}}}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{General citation setup}
%\begin{macro}{\acs@bibstyle}
% The \currpkg package sets up the correct bibliography style.
%    \begin{macrocode}
%\end{macro}
\ifacs@biochemistry
  \newcommand*{\acs@bibstyle}{biochem}
\else
  \newcommand*{\acs@bibstyle}{achemso}
\fi
\expandafter\bibliographystyle\expandafter{\acs@bibstyle}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\bibliographystyle}
%\begin{macro}{\acs@bibliographystyle}
% If \pkg{chapterbib} is loaded, then multiple calls to
% \cs{bibliographystyle} need to be allowed.  In either case, the
% argument is gobbled.
%    \begin{macrocode}
\let\acs@bibliographystyle\bibliographystyle
\AtBeginDocument{
  \@ifpackageloaded{chapterbib}
    {\renewcommand*{\bibliographystyle}[1]{%
      \expandafter\acs@bibliographystyle\expandafter{%
        \acs@bibstyle}}}}
\renewcommand*{\bibliographystyle}[1]{%
  \PackageWarning{achemso}{\string\bibliographystyle\space
    ignored}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\citenumfont}
% For on-line citations, italic numbers are required.
%    \begin{macrocode}
\ifacs@super\else
  \newcommand*{\citenumfont}{\textit}
\fi
%    \end{macrocode}
%\end{macro}
%
%\subsection{Controlling \texorpdfstring{\BibTeX}{BibTeX}}
%\begin{macro}{\acs@msg}
%\begin{macro}{\acs@writebib}
%\begin{macro}{\acs@out}
%\begin{macro}{\acs@stream}
% \currpkg use the same system as \pkg{biblatex} and \pkg{IEEEtrans}
% to control output.  A special database is generated, which contains
% the necessary control entries.
%    \begin{macrocode}
\edef\acs@msg{%
  This is an auxiliary file used by the `achemso' package.^^J%
  This file may safely be deleted. It will be recreated as
  required.^^J}
\newcommand*{\acs@writebib}{%
  \immediate\openout\acs@out\acs@stream\relax
  \immediate\write\acs@out{\acs@msg}%
%    \end{macrocode}
% A shortcut to producing the control sequences.
%    \begin{macrocode}
  \edef\acs@tempa##1##2{\space\space##1\space
    =\space"##2",^^J}%
  \immediate\write\acs@out{%
    @Control\string{achemso-control,^^J%
    \acs@tempa{ctrl-use-title}{\ifacs@usetitle
      yes\else no\fi}%
    \acs@tempa{ctrl-etal-number}{\acs@maxauthors}%
    \string}^^J}}
%    \end{macrocode}
% The writing system is designed to allow the class to re-write the
% control file if needed.
%    \begin{macrocode}
\if@filesw
  \newwrite\acs@out
  \newcommand*\acs@stream{\acs@prefix\jobname.bib}
  \acs@writebib
  \AtBeginDocument{\immediate\closeout\acs@out}
\fi
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\bibliography}
%\begin{macro}{\acs@bibliography}
% The \cs{bibliography} macro is now patched to use the control
% database.
%    \begin{macrocode}
\AtBeginDocument{
  \let\acs@bibliography\bibliography
  \renewcommand*{\bibliography}[1]{%
    \acs@bibliography{\acs@prefix\jobname,#1}}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
% The control citation is now added to the document.  This needs to
% be after the beginning of the document.  To avoid a \pkg{natbib}
% warning, this is done directly (without \cs{nocite}).
%    \begin{macrocode}
\g@addto@macro{\document}{%
  \if@filesw
    \immediate\write\@auxout{%
      \string\citation\string{achemso-control\string}}%
  \fi}
%    \end{macrocode}
%
%\section{The configuration files}
% The configuration files for different journals are not very
% complex.  Keeping everything separate simply helps with
% maintenance. The defaults are re-applied by the files so that any
% user options are over-written when using the class file.  Several
% of the files are basically copies of \file{jacsat.cfg}.
%
%\iffalse
%</package>
%<*jacsat>
%\fi
%\subsection{\emph{J.~Am.\ Chem.\ Soc.}}
% The \emph{J. Am. Chem. Soc.} is the basis of all of the configuration
% files.
%    \begin{macrocode}
\ProvidesFile{jacsat.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Am. Chem. Soc.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,communication,suppinfo}
%    \end{macrocode}
% For JACS Communications, a number of setting changes are made to
% match the published style. A lot of the float stuff is
% copied from \pkg{chemstyle}.
%    \begin{macrocode}
\renewcommand*{\acs@tempa}{communication}
\ifx\acs@manuscript\acs@tempa
%    \end{macrocode}
%\begin{macro}{\@xipt}
% The class loaded is 12 point and one column.  So changes are needed
% to get two columns and 9 point text.
%    \begin{macrocode}
  \@twocolumntrue
  \col@number\tw@\relax
  \def\@xipt{11}
  \renewcommand{\normalsize}{%
    \@setfontsize\normalsize\@ixpt\@xipt}
  \normalsize
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\titlesize}
%\begin{macro}{\authorsize}
%\begin{macro}{\affilsize}
%\begin{macro}{\emailsize}
%\begin{macro}{\capsize}
%\begin{macro}{\acksize}
%\begin{macro}{\suppsize}
%\begin{macro}{\refsize}
% To keep things logical, the size macros are given names related to
% their function.
%    \begin{macrocode}
  \newcommand*{\titlesize}{%
    \@setfontsize\titlesize\@xiipt{13}}
  \newcommand*{\authorsize}{%
    \@setfontsize\authorsize{10.5}{12.5}}
  \newcommand*{\affilsize}{%
    \@setfontsize\affilsize\@ixpt\@xpt}
  \newcommand*{\emailsize}{%
    \@setfontsize\emailsize\@viiipt{15}}
  \newcommand*{\capsize}{%
    \@setfontsize\capsize\@viiipt\@ixpt}
  \newcommand*{\acksize}{%
    \@setfontsize\acksize\@ixpt\@xipt}
  \newcommand*{\suppsize}{%
    \@setfontsize\suppsize{8.5}{10.5}}
  \newcommand*{\refsize}{%
    \@setfontsize\refsize{7.5}{7.5}}
  \let\footnotesize\refsize
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
% The page geometry is set up, along with the various spacings around
% display content.
%    \begin{macrocode}
  \geometry{letterpaper,top=12.7mm,bottom=16.8mm,left=19.3mm,
    right=19.3mm,dvips}
  \setlength{\columnsep}{8.1mm}
  \setlength{\parindent}{3.3mm}
  \abovedisplayskip 5\p@ \@plus2\p@ \@minus 5\p@
  \abovedisplayshortskip \z@ \@plus3\p@
  \belowdisplayshortskip 3\p@ \@plus3\p@ \@minus 3\p@
  \belowdisplayskip \abovedisplayskip
  \abovecaptionskip 5\p@
  \intextsep 7\p@ \@plus 2\p@ \@minus 2\p@
  \let\@listi\@listI
%    \end{macrocode}
% \TeX\ is given some extra play with the spacing, as narrow columns otherwise
% need a lot of hyphens.
%    \begin{macrocode}
  \tolerance=2000
  \emergencystretch=10pt
%    \end{macrocode}
% Some adjustments are now made to the layout.
%    \begin{macrocode}
  \acs@killabstract
  \acs@killsecs
  \AtBeginDocument{\singlespacing}
%    \end{macrocode}
%\begin{macro}{\ps@plain}
%\begin{macro}{\ps@jacs}
% The header styles are again done the hard way, to keep down the
% number of packages loaded.
%    \begin{macrocode}
  \renewcommand*{\ps@plain}{%
    \let\@mkboth\@gobbletwo
    \let\@oddhead\@empty
    \renewcommand*{\@oddfoot}{%
      \reset@font\sffamily\textbf{\thepage}\hfil}%
    \let\@evenhead\@empty
    \let\@evenfoot\@oddfoot}
  \newcommand*{\ps@jacs}{%
    \renewcommand*{\@oddfoot}{%
      \reset@font\sffamily\textbf{\thepage}\hfil}%
    \renewcommand*{\@evenfoot}{%
      \reset@font\hfil\sffamily\textbf{\thepage}}%
    \renewcommand*{\@oddhead}{}%
    \let\@evenhead\@oddhead}
  \pagestyle{jacs}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\begin{macro}{\@maketitle}
% The title-making macro is completely re-written to force the desired
% spacing.
%    \begin{macrocode}
  \renewcommand*{\@maketitle}{%
    \pagestyle{jacs}%
    \ifnum\acs@authorcnt<\z@\relax
      \ClassError{achemso}{No authors defined}
      {At least one author is required}%
    \fi
    \newpage
    \null
    {\titlesize
     \vspace*{16mm}}%
    \begin{center}
      \begin{minipage}{152.4mm}
        \begin{center}
          {\titlesize\bfseries\sffamily
           \@title \par}%
          {\authorsize\sffamily\frenchspacing
           \acs@authorlist\par}%
          {\affilsize\itshape\acs@addresslist \par}%
          {\emailsize\sffamily
           Received \today;
           E-mail: \acs@emaillist}%
          \vspace{-1mm}%
        \end{center}
      \end{minipage}
    \end{center}}
%    \end{macrocode}
%\end{macro}
% Getting the floats correct is a difficult task ``by hand''; using
% the \pkg{caption} package makes this a lot easier.
%    \begin{macrocode}
  \floatstyle{plaintop}
  \restylefloat{scheme}
  \floatstyle{plain}
  \DeclareCaptionLabelSeparator{perquad}{.\quad}
  \captionsetup{labelfont={bf,it,sf},textfont=sf,
    labelsep=perquad}
  \let\captionfont\capsize
  \captionsetup[figure]{textfont=rm}
  \captionsetup{singlelinecheck=off}
%    \end{macrocode}
% The text in tables should be smaller.
%    \begin{macrocode}
  \g@addto@macro{\table}{\capsize}
%    \end{macrocode}
%\begin{environment}{acknowledgement}
%\begin{environment}{suppinfo}
% Supporting information and acknowledgements are turned into
% environments proper here; this allows control of text size.
%    \begin{macrocode}
  \renewenvironment{acknowledgement}{%
    \renewcommand*{\acs@tempa}{acknowledgement}%
    \ifx\@currenvir\acs@tempa
      \let\par\relax
      \acksize
      \vspace{6pt}%
      \textbf{\acs@acknowledgement.}
    \else
      \acs@subsection*{\acs@acknowledgement}
    \fi}{\acs@par}
  \renewenvironment{suppinfo}{%
    \renewcommand*{\acs@tempa}{suppinfo}%
    \ifx\@currenvir\acs@tempa
      \let\par\relax
      \suppsize
      \vspace{6pt}%
      \textbf{\acs@suppinfo:}
    \else
      \acs@subsection*{\acs@suppinfo}
    \fi}{\acs@par}
%    \end{macrocode}
%\begin{macro}{\acs@par}
% The above needs a saved copy of \cs{par}.
%    \begin{macrocode}
  \let\acs@par\par
%    \end{macrocode}
%\end{macro}
% The bibliography has to be adjusted.
%    \begin{macrocode}
  \AtBeginDocument{
    \renewcommand*{\bibsection}{%
      \@startsection{section}{1}
        {\z@}{\z@}{2.5mm}%
        {\normalfont\acksize\bfseries}
        {\hrule\nobreak
      \vspace{1.2mm}\noindent\refname}}
    \let\bibfont\refsize
    \setlength{\bibhang}{0.61cm}
    \setlength{\bibsep}{0mm}}
\fi
%    \end{macrocode}
%\end{environment}
%\end{environment}
%
%\iffalse
%</jacsat>
%<*achre4>
%\fi
%\subsection{\emph{Acc.\ Chem.\ Res.}}
%    \begin{macrocode}
\ProvidesFile{achre4.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Acc. Chem. Res.]
\acs@setkeys{
  abbreviate=true,
  biblabel=plain,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,suppinfo}
\renewcommand*{\abstractname}{Conspectus}
%    \end{macrocode}
%\iffalse
%</achre4>
%<*acbcct>
%\fi
%\subsection{\emph{ACS Chem.\ Biol.}}
%    \begin{macrocode}
\ProvidesFile{acbcct.cfg}
  [2009/02/03 v3.1a achemso configuration:
   ACS Chem. Biol.]
\acs@setkeys{
  abbreviate=true,
  biblabel=fullstop,
  biochem=true,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{article,letter,review,suppinfo}
%    \end{macrocode}
%\iffalse
%</acbcct>
%<*ancac3>
%\fi
%\subsection{\emph{ACS Nano}}
%    \begin{macrocode}
\ProvidesFile{acbcct.cfg}
  [2009/02/03 v3.1a achemso configuration:
   ACS Nano]
\acs@setkeys{
  abbreviate=true,
  biblabel=fullstop,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=true}
\acs@validtype{perspective,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</ancac3>
%<*ancham>
%\fi
%\subsection{\emph{Anal.\ Chem.}}
%    \begin{macrocode}
\ProvidesFile{ancham.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Anal. Chem.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,suppinfo,note}
%    \end{macrocode}
%\iffalse
%</ancham>
%<*bichaw>
%\fi
%\subsection{\emph{Biochemistry}}
%    \begin{macrocode}
\ProvidesFile{biochem.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Biochemistry]
\acs@setkeys{
  abbreviate=true,
  biblabel=fullstop,
  biochem=true,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{article,communication,suppinfo}
%    \end{macrocode}
%\iffalse
%</bichaw>
%<*bcches>
%\fi
%\subsection{\emph{Bioconjugate Chem.}}
%    \begin{macrocode}
\ProvidesFile{bcches.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Bioconjugate Chem.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=true,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{article,communication,suppinfo}
%    \end{macrocode}
%\iffalse
%</bcches>
%<*bomaf6>
%\fi
%\subsection{\emph{Biomacromolecules}}
%    \begin{macrocode}
\ProvidesFile{bomaf6.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Biomacromolecules]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{article,communication,suppinfo}
%    \end{macrocode}
%\iffalse
%</bomaf6>
%<*bipret>
%\fi
%\subsection{\emph{Biotechnol.\ Prog.}}
%    \begin{macrocode}
\ProvidesFile{bipret.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Biotechnol. Prog.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{article,review,suppinfo}
%    \end{macrocode}
%\iffalse
%</bipret>
%<*crtoec>
%\fi
%\subsection{\emph{Chem.\ Res.\ Toxicol.}}
%    \begin{macrocode}
\ProvidesFile{crtoec.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Chem. Res. Toxicol.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=true,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{perspective,article,review,profile,suppinfo}
%    \end{macrocode}
%\iffalse
%</crtoec>
%<*chreay>
%\fi
%\subsection{\emph{Chem.\ Rev.}}
% For \emph{Chem.\ Rev.}, the usual start.
%    \begin{macrocode}
\ProvidesFile{chreay.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Chem. Rev.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=0,
  super=true,
  usetitle=false}
\acs@validtype[review]{review}
%    \end{macrocode}
%\begin{macro}{\bibsection}
% Some changes are needed as the bibliography should be numbered.
% This is done with the \cs{bibsection} macro, as \pkg{natbib} sets
% this up rather than \cs{thebibliography}.
%    \begin{macrocode}
\AtBeginDocument{
  \renewcommand*{\bibsection}{\section{\refname}}}
%    \end{macrocode}
%\end{macro}
%\iffalse
%</chreay>
%<*cmatex>
%\fi
%\subsection{\emph{Chem.\ Mater.}}
%    \begin{macrocode}
\ProvidesFile{cmatex.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Chem. Mater.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,communication,suppinfo}
\renewcommand*{\acs@tempa}{communication}
\ifx\acs@manuscript\acs@tempa
  \acs@killabstract
  \acs@killsecs
\fi
%    \end{macrocode}
%\iffalse
%</cmatex>
%<*cgdefu>
%\fi
%\subsection{\emph{Cryst.\ Growth Des.}}
%    \begin{macrocode}
\ProvidesFile{cgdefu.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Cryst. Growth Des.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{perspective,article,communication,suppinfo}
\renewcommand*{\acs@tempa}{communication}
\ifx\acs@manuscript\acs@tempa
  \acs@killsecs
\fi
%    \end{macrocode}
%\iffalse
%</cgdefu>
%<*enfuem>
%\fi
%\subsection{\emph{Energy Fuels}}
%    \begin{macrocode}
\ProvidesFile{enfuem.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Energy Fuels]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{review,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</enfuem>
%<*esthag>
%\fi
%\subsection{\emph{Environ.\ Sci.\ Technol.}}
%    \begin{macrocode}
\ProvidesFile{esthag.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Environ. Sci. Technol.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{article,suppinfo}
%    \end{macrocode}
%\iffalse
%</esthag>
%<*iecred>
%\fi
%\subsection{\emph{Ind.\ Eng.\ Chem.\ Res.}}
%    \begin{macrocode}
\ProvidesFile{iecred.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Ind. Eng. Chem. Res.]
\acs@setkeys{
  abbreviate=true,
  biblabel=fullstop,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=true}
\acs@validtype{article,communication,suppinfo}
\renewcommand*{\acs@tempa}{suppinfo}
\ifx\acs@manuscript\acs@tempa
  \acs@setkeys{maxauthors=0}
\fi
%    \end{macrocode}
%\iffalse
%</iecred>
%<*inoraj>
%\fi
%\subsection{\emph{Inorg.\ Chem.}}
%    \begin{macrocode}
\ProvidesFile{inoraj.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Inorg. Chem.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,communication,suppinfo}
\renewcommand*{\acs@tempa}{communication}
\ifx\acs@manuscript\acs@tempa
  \acs@killabstract
  \acs@killsecs
\fi
%    \end{macrocode}
%\iffalse
%</inoraj>
%<*jafcau>
%\fi
%\subsection{\emph{J.~Agric.\ Food Chem.}}
%    \begin{macrocode}
\ProvidesFile{jafcau.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Agric. Food Chem.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=false,
  usetitle=true}
\acs@validtype{article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jafcau>
%<*jceaax>
%\fi
%\subsection{\emph{J.~Chem.\ Eng. Data}}
%    \begin{macrocode}
\ProvidesFile{jceaax.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Chem. Eng. Data]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=true}
\acs@validtype{article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jceaax>
%<*jcisd8>
%\fi
%\subsection{\emph{J.~Chem.\ Inf.\ Model.}}
%    \begin{macrocode}
\ProvidesFile{jcisd8.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Chem. Inf. Model.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=true}
\acs@validtype{article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jcisd8>
%<*jctcce>
%\fi
%\subsection{\emph{J.~Chem.\ Theory Comput.}}
%\changes{v3.0a}{2008/08/21}{Added section numbers for
%  \emph{J.~Chem.\ Theory Comput.}}
%    \begin{macrocode}
\ProvidesFile{jctcce.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Chem. Theory Comput.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,suppinfo}
\acs@restsecnums
%    \end{macrocode}
%\iffalse
%</jctcce>
%<*jcchff>
%\fi
%\subsection{\emph{J.~Comb.\ Chem.}}
%    \begin{macrocode}
\ProvidesFile{jcchff.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Comb. Chem.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,report,perspective,suppinfo}
%    \end{macrocode}
%\iffalse
%</jcchff>
%<*jmcmar>
%\fi
%\subsection{\emph{J.~Med.\ Chem.}}
%    \begin{macrocode}
\ProvidesFile{jmcmar.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Med. Chem.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=true}
\acs@validtype{perspective,letter,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jmcmar>
%<*jnprdf>
%\fi
%\subsection{\emph{J.~Nat.\ Prod.}}
%    \begin{macrocode}
\ProvidesFile{jnprdf.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Nat. Prod.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,communication,suppinfo}
\renewcommand*{\acs@tempa}{communication}
\ifx\acs@manuscript\acs@tempa
  \acs@killabstract
  \acs@killsecs
\fi
%    \end{macrocode}
%\iffalse
%</jnprdf>
%<*joceah>
%\fi
%\subsection{\emph{J.~Org.\ Chem.}}
%    \begin{macrocode}
\ProvidesFile{joceah.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Org. Chem.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{article,communication,suppinfo}
\renewcommand*{\acs@tempa}{communication}
\ifx\acs@manuscript\acs@tempa
  \acs@killabstract
  \acs@killsecs
\fi
%    \end{macrocode}
%\iffalse
%</joceah>
%<*jpcafh>
%\fi
%\subsection{\emph{J.~Phys.\ Chem.~A}}
%    \begin{macrocode}
\ProvidesFile{jpcafh.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Phys. Chem. A]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{letter,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jpcafh>
%<*jpcbfk>
%\fi
%\subsection{\emph{J.~Phys.\ Chem.~B}}
%    \begin{macrocode}
\ProvidesFile{jpcbfk.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Phys. Chem. B]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{letter,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jpcbfk>
%<*jpccck>
%\fi
%\subsection{\emph{J.~Phys.\ Chem.~C}}
%    \begin{macrocode}
\ProvidesFile{jpccck.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Phys. Chem. C]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{letter,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jpccck>
%<*jprobs>
%\fi
%\subsection{\emph{J.~Proteome Res.}}
%    \begin{macrocode}
\ProvidesFile{jprobs.cfg}
  [2009/02/03 v3.1a achemso configuration:
   J. Proteome Res.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=true}
\acs@validtype{review,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</jprobs>
%<*langd5>
%\fi
%\subsection{\emph{Langmuir}}
%    \begin{macrocode}
\ProvidesFile{langd5.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Langmuir]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{letter,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</langd5>
%<*mamobx>
%\fi
%\subsection{\emph{Macromolecules}}
%    \begin{macrocode}
\ProvidesFile{mamobx.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Macromolecules]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{communication,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</mamobx>
%<*mpohbp>
%\fi
%\subsection{\emph{Mol.\ Pharm.}}
%    \begin{macrocode}
\ProvidesFile{mamobx.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Mol. Pharm.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=true}
\acs@validtype{article,suppinfo}
%    \end{macrocode}
%\iffalse
%</mpohbp>
%<*nalefd>
%\fi
%\subsection{\emph{Nano Lett.}}
%    \begin{macrocode}
\ProvidesFile{nalefd.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Nano Lett.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype[letter]{letter}
%    \end{macrocode}
%\iffalse
%</nalefd>
%<*orlef7>
%\fi
%\subsection{\emph{Org.\ Lett.}}
%    \begin{macrocode}
\ProvidesFile{orlef7.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Org. Lett.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype[letter]{letter}
%    \end{macrocode}
%\iffalse
%</orlef7>
%<*oprdfk>
%\fi
%\subsection{\emph{Org.\ Proc.\ Res.\ Dev.}}
%    \begin{macrocode}
\ProvidesFile{oprdfk.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Org. Proc. Res. Dev.]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{highlight,article,review,suppinfo}
%    \end{macrocode}
%\iffalse
%</oprdfk>
%<*orgnd7>
%\fi
%\subsection{\emph{Organometallics}}
%    \begin{macrocode}
\ProvidesFile{orgnd7.cfg}
  [2009/02/03 v3.1a achemso configuration:
   Organometallics]
\acs@setkeys{
  abbreviate=true,
  biblabel=brackets,
  biochem=false,
  maxauthors=15,
  super=true,
  usetitle=false}
\acs@validtype{communication,article,suppinfo}
%    \end{macrocode}
%\iffalse
%</orgnd7>
%\fi
%
%\Finale
%\iffalse
%<*refs>
@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},
}

@MISC{ACS2007,
  url = {http://pubs.acs.org/books/references.shtml},
}

@ARTICLE{Arduengo1992,
  author = {Arduengo, III, Anthony J. and H. V. Rasika Dias and
    Richard L. Harlow and Michael Kline},
  title = {{E}lectronic stabilization of nucleophilic carbenes},
  journal = {{J}.~{A}m.\ {C}hem.\ {S}oc.},
  year = {1992},
  volume = {114},
  pages = {5530--5534},
  number = {14},
  doi = {10.1021/ja00040a007},
}

@ARTICLE{Arduengo1994,
  author = {Arduengo, III, Anthony J. and Siegfried F. Gamper and
    Joseph C. Calabrese	and Fredric Davidson},
  title = {{L}ow-coordinate carbene complexes of nickel(0) and
    platinum(0)},
  journal = jacsat,
  year = {1994},
  volume = {116},
  pages = {4391--4394},
  number = {10},
  doi = {10.1021/ja00089a029},
}

@ARTICLE{Eisenstein2005,
  author = {Appelhans, Leah N. and Zuccaccia, Daniele and Kovacevic,
    Anes and Chianese, Anthony R. and Miecznikowski, John R. and
    Macchioni, Aleco and Clot, Eric and Eisenstein, Odile and
    Crabtree, Robert H.},
  title = {{A}n anion-dependent switch in selectivity results from a
    change of {C}---{H} activation mechanism in the reaction of an
    imidazolium salt with \ce{IrH5(PPh3)2}},
  journal = {{J}.~{A}m.\ {C}hem. {S}oc.},
  year = {2005},
  volume = {127},
  pages = {16299--16311},
  number = {46},
  doi = {10.1021/ja055317j},
}

@BOOK{Coghill2006,
  title = {{T}he {ACS} {S}tyle {G}uide},
  publisher = {{O}xford {U}niversity {P}ress, {I}nc. and
               {T}he {A}merican {C}hemical {S}ociety},
  year = {2006},
  editor = {Coghill, Anne M. and Garson, Lorrin R.},
  address = {{N}ew {Y}ork},
  edition = {3},
  subtitle = {{E}ffective {C}ommunication of {S}cientific
    {I}nformation},
}

@BOOK{Cotton1999,
  title = {{A}dvanced {I}norganic {C}hemistry},
  publisher = {Wiley},
  year = {1999},
  author = {Cotton, Frank Albert and Wilkinson, Geoffrery and
    Murillio, Carlos A. and Bochmann, Manfred},
  address = {Chichester},
  edition = {6},
}

@MANUAL{Pople2003,
  title = {{G}aussian 03},
  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 Montgomery and Jr. and J.
	A. and T. Vreven and K.~N. Kudin and J.~C. Burant and J.~M. Millam
	and S.~S. Iyengar and J. Tomasi and V. Barone and B. Mennucci and
	M. Cossi and G. Scalmani and N. Rega and G.~A. Petersson and H. Nakatsuji
	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 M. Klene and X. Li and J.~E. Knox and H.~P. Hratchian 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 P.~Y. Ayala and K. Morokuma and
	G.~A. Voth and P. Salvador and J.~J. Dannenberg and V.~G. Zakrzewski
	and S. Dapprich and A.~D. Daniels and M.~C. Strain and O. Farkas
	and D.~K. Malick and A.~D. Rabuck and K. Raghavachari and J.~B. Foresman
	and J.~V. Ortiz and Q. Cui and A.~G. Baboul and S. Clifford and J.
	Cioslowski and B.~B. Stefanov and G. Liu and A. Liashenko and P.
	Piskorz and I. Komaromi and R.~L. Martin and D.~J. Fox and T. Keith
	and M.~A. Al-Laham and C.~Y. Peng and A. Nanayakkara and M. Challacombe
	and P.~M.~W. Gill and B. Johnson and W. Chen and M.~W. Wong and C.
	Gonzalez and J.~A. Pople},
  organization = {Gaussian, Inc.},
  address = {Wallingford, CT},
  year = {2004},
  howpublished = {Gaussian, Inc., Wallingford, CT, USA},
  institution = {Gaussian, Inc.},
  publisher = {Gaussian, Inc.}
}

@ARTICLE{Mena2000,
  author = {Angel Abarca and Pilar G\'omez-Sal and Avelino Mart\'in
    and Miguel Mena and Josep Mar\'ia Poblet and Carlos Y\'elamos},
  title = {{A}mmonolysis of mono(pentamethylcyclopentadienyl)
    titanium(\textsc{iv}) derivatives},
  journal = {Inorg. Chem.},
  year = {2000},
  volume = {39},
  pages = {642--651},
  number = {4},
  doi = {10.1021/ic9907718},
}
%</refs>
%<*demo>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% This is a (brief) model paper using the achemso class
%% The document class accepts keyval options, which should include
%% the target journal and optionally the macuscript type.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[journal=jacsat,manuscript=article]{achemso}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Place any additional packages needed here.  Only include packages
%% which are essential, to avoid problems later. Do NOT use any
%% packages which require e-TeX (for example etoolbox): the e-TeX
%% extensions are not currently available on the ACS conversion
%% servers.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[version=3]{mhchem} % Formula subscripts using \ce{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% If issues arise when submitting your manuscript, you may want to
%% un-comment the next line.  This provides information on the
%% version of every file you have used.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%\listfiles

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Place any additional macros here.  Please use \newcommand* where
%% possible, and avoid layout-changing macros (which are not used
%% when typesetting).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*{\mycommand}[1]{\texttt{\emph{#1}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Meta-data block
%% ---------------
%% Each author should be given as a separate \author command.
%%
%% Corresponding authors should have an e-mail given after the author
%% name as an \email command.
%%
%% The affiliation of authors is given after the authors; each
%% \affiliation command applies to all preceding authors not already
%% assigned an affiliation.
%%
%% The affiliation takes an option argument for the short name.  This
%% will typically be something like "University of Somewhere".
%%
%% The \altaffiliation macro should be used for new address, etc.
%% On the other hand, \alsoaffiliation is used on a per author basis
%% when authors are associated with multiple institutions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\author{Andrew N. Other}
\author{Fred T. Secondauthor}
\altaffiliation{Current address: Some other place, Othert\"own,
Germany}
\author{I. Ken Groupleader}
\email{i.k.groupleader@unknown.uu}
\affiliation[Unknown University]
{Department of Chemistry, Unknown University, Unknown Town}
\alsoaffiliation[Second University]
{Department of Chemistry, Second University, Nearby Town}
\author{Susanne K. Laborator}
\email{s.k.laborator@bigpharma.co}
\affiliation[BigPharma]
{Lead Discovery, BigPharma, Big Town, USA}
\author{Kay T. Finally}
\affiliation[Unknown University]
{Department of Chemistry, Unknown University, Unknown Town}
\alsoaffiliation[Second University]
{Department of Chemistry, Second University, Nearby Town}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The document title should be given as usual
%% A short title can be given as a *suggestion* for running headers.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title[\texttt{achemso} demonstration]
{A demonstration of the \textsf{achemso} \LaTeX\ class}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The manuscript does not need to include \maketitle, which is
%% executed automatically.  The document should begin with an
%% abstract, if appropriate.  If one is given and should not be, the
%% contents will be gobbled.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{abstract}
  This is an example document for the \textsf{achemso} document
  class, intended for submissions to the American Chemical Society
  for publication. The class is based on the standard \LaTeXe\
  \textsf{report} file, and does not seek to reproduce the appearance
  of a published paper.

  This is an abstract for the \textsf{achemso} document class
  demonstration document.  An abstract is only allowed for certain
  manuscript types.  The selection of \texttt{journal} and
  \texttt{type} will determine if an abstract is valid.  If not, the
  class will issue an appropriate error.
\end{abstract}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Start the main part of the manuscript here.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction}
This is a paragraph of text to fill the introduction of the
demonstration file.  The demonstration file attempts to show the
modifications of the standard \LaTeX\ macros that are implemented by
the \textsf{achemso} class.  These are mainly concerned with content,
as opposed to appearance.

\section{Results and discussion}

\subsection{Outline}

The document layout should follow the style of the journal concerned.
Where appropriate, sections and subsections should be added in the
normal way. If the class options are set correctly, warnings will be
given if these should not be present.

\subsection{References}

The class makes various changes to the way that references are
handled.  The class loads \textsf{natbib}, and also the
appropriate bibliography style.  References can be made using
the normal method; the citation should be placed before any
punctuation, as the class will move it if using a superscript
citation style \cite{Mena2000,Abernethy2003}. The use of
\textsf{natbib} allows the use of the various citation commands
of that package: \citeauthor{Abernethy2003} have shown
something, in \citeyear{Cotton1999}, or as given by
Ref.~\citenum{Mena2000}.  Long lists of authors will be
automatically truncated in most article formats, but not in
supplementary information or reviews \cite{Pople2003}. If you
encounter problems with the citation macros, please check that
your copy of \textsf{natbib} is up to date.

Multiple citations to be combined into a list can be given as
a single citation.  This uses the \textsf{mciteplus} package
\cite{Arduengo1992,*Eisenstein2005,*Arduengo1994}.  Citations
other than the first of the list should be indicated with a star.

The class also handles notes to be added to the bibliography.  These
should be given in place in the document \bibnote{This is a note.
The text will be moved the the references section.  The title of the
section will change to ``Notes and References''.}.  As with
citations, the text should be placed before punctuation.  A note is
also generated if a citation has an optional note.  This assumes that
the whole work has already been cited: odd numbering will result if
this is not the case \cite[p.~1]{Cotton1999}.

\subsection{Floats}

New float types are automatically set up by the class file.  The
means graphics are included as follows (\ref{sch:example}).  As
illustrated, the float is ``here'' if possible.
\begin{scheme}
  Your scheme graphic would go here: \texttt{.eps} format\\
  for \LaTeX\, or \texttt{.pdf} (or \texttt{.png}) for pdf\LaTeX\\
  \textsc{ChemDraw} files are best saved as \texttt{.eps} files;\\
  these can be scaled without loss of quality, and can be\\
  converted to \texttt{.pdf} files easily using \texttt{eps2pdf}.\\
  %\includegraphics{graphic}
  \caption{An example scheme}
  \label{sch:example}
\end{scheme}

\begin{figure}
  As well as the standard float types \texttt{table}\\
  and \texttt{figure}, the class also recognises\\
  \texttt{scheme}, \texttt{chart} and \texttt{graph}.
  \caption{An example figure}
  \label{fgr:example}
\end{figure}

Charts, figures and schemes do not necessarily have to be labelled or
captioned.  However, tables should always have a title. It is
possible to include a number and label for a graphic without any
title, using an empty argument to the \texttt{\textbackslash caption}
macro.

The use of the different floating environments is not required, but
it is intended to make document preparation easier for authors. In
general, you should place your graphics where they make logical
sense; the production process will move them if needed.

\subsection{Math(s)}

The \textsf{achemso} class does not load any particular additional
support for mathematics.  If the author \emph{needs} things like
\textsf{amsmath}, they should be loaded in the preamble.  However,
the basics should work fine.  Some inline material $ y = mx + c$
followed by some display. \[ A = \pi r^2 \]

It is possible to label equations in the usual way.
\begin{equation}
  \frac{\mathrm{d}}{\mathrm{d}x} r^2 = 2r
\end{equation}
This can also be used to have equations containing graphical
content.
\begin{equation}
  \textrm{Some content}
  %\includegraphics{graphic}
  \label{eqn:graphic}
\end{equation}

\section{Experimental}

The usual experimental details should appear here.  This could
include a table, which can be referenced as \ref{tbl:example}. Notice
that the caption is positioned at the top of the table. Do not worry
about the appearance of the table: this will be altered during
production.
\begin{table}
  \caption{An example table}
  \label{tbl:example}
  \begin{tabular}{ll}
    \hline
    Header one & Header two \\
    \hline
    Entry one & Entry two \\
    Entry three & Entry four \\
    Entry five & Entry five \\
    Entry seven & Entry eight \\
    \hline
  \end{tabular}
\end{table}

Adding notes to tables can be complicated.  Perhaps the easiest
method is to generate these using the basic
\texttt{\textbackslash textsuperscript} and
\texttt{\textbackslash emph} macros, as illustrated
(\ref{tbl:notes}).
\begin{table}
  \caption{A table with notes}
  \label{tbl:notes}
  \begin{tabular}{ll}
    \hline
    Header one & Header two \\
    \hline
    Entry one\textsuperscript{\emph{a}}
      & Entry two \\
    Entry three\textsuperscript{\emph{b}}
      & Entry four \\
  \hline
  \end{tabular}

  \textsuperscript{\emph{a}} Some text;
  \textsuperscript{\emph{b}} Some more text.
\end{table}

The example file also loads the \textsf{mhchem} package, so
that formulas are easy to input: \texttt{\textbackslash
\ce\{H2SO4\}} gives \ce{H2SO4}.  See the use in the
bibliography file (when using titles in the references
section).

The use of new commands should be limited to simple things which will
not interfere with the production process.  For example,
\texttt{\textbackslash mycommand} has been defined in this example,
to give italic, monospaced text: \mycommand{some text}.

\section{Extra information when writing JACS Communications}

When producing communications for \emph{J.~Am.\ Chem.\ Soc.}, the
class will automatically lay the text out in the style of the
journal. This gives a guide to the length of text that can be
accommodated in such a publication. There are some points to bear in
mind when preparing a JACS Communication in this way.  The layout
produced here is a \emph{model} for the published result, and the
outcome should be taken as a \emph{guide} to the final length. The
spacing and sizing of graphical content is an area where there is
some flexibility in the process.  You should not worry about the
space before and after graphics, which is set to give a guide to the
published size. This is very dependant on the final published layout.

You should be able to use the same source to produce a JACS
Communication and a normal article.  For example, this demonstration
file will work with both \texttt{type=article} and
\texttt{type=communication}. Sections and any abstract are
automatically ignored, although you will get warnings to this effect.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The "Acknowledgement" section can be given in all manuscript
%% classes.  This should be given within the "acknowledgement"
%% environment, which will make the correct section or running title.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{acknowledgement}

Please use ``The authors thank \ldots'' rather than ``The
authors would like to thank \ldots''.

The author thanks Mats Dahlgren for version one of \textsf{achemso},
and Donald Arseneau for the code taken from \textsf{cite} to move
citations after punctuation.

\end{acknowledgement}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The same is true for Supporting Information, which should use the
%% suppinfo environment.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{suppinfo}

This will usually read something like: ``Experimental procedures and
characterization data for all new compounds. This material is
availble free of charge via the Internet at
\url{http://pubs.acs.org}.''

The entire \textsf{achemso} bundle is generated by running
\texttt{achemso.dtx} through \TeX. Running \LaTeX\ on the same file
will generate the general documentation for both the class and
package files.

\end{suppinfo}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The appropriate \bibliography command should be placed here.
%% Notice that the class file automatically sets \bibliographystyle
%% and also names the section correctly.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliography{achemso}

\end{document}
%</demo>
%<*bst>
ENTRY
  { address
    author
    booktitle
    chapter
    ctrl-use-title
    ctrl-etal-number
    doi
    edition
    editor
    howpublished
    institution
    journal
    key
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    url
    volume
    year
  }
  {}
  { label
    extra.label
    short.list
  }

INTEGERS { output.state before.all mid.sentence after.sentence }
INTEGERS { after.block after.item author.or.editor }
INTEGERS { separate.by.semicolon }
INTEGERS { is.use.title etal.number }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'after.item :=
}

%% #0 turns off the display of the title for articles
%% #1 enables
%<!bio>FUNCTION {default.is.use.title} { #0 }
%<bio>FUNCTION {default.is.use.title} { #1 }

%% The number of names that force "et al." to be used
FUNCTION {default.etal.number} { #15 }

FUNCTION {add.comma}
{ ", " * }

FUNCTION {add.semicolon}
{ "; " * }

%<*!bio>
FUNCTION {add.comma.or.semicolon}
{ #1 separate.by.semicolon =
    'add.semicolon
    'add.comma
  if$
}

%</!bio>
FUNCTION {add.colon}
{ ": " * }

STRINGS { s t }

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { add.comma write$ }
    { output.state after.block =
      { add.semicolon write$
        newline$
        "\newblock " write$
      }
      { output.state before.all =
          'write$
          { output.state after.item =
            { " " * write$ }
            { add.period$ " " * write$ }
          if$
          }
        if$
        }
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {output.check}
{ 't :=
  duplicate$ empty$
    { pop$ "Empty " t * " in " * cite$ * warning$ }
    'output.nonnull
  if$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
        'skip$
        { after.sentence 'output.state := }
      if$
    }
  if$
}

INTEGERS {would.add.period.textlen}

FUNCTION {would.add.period}
{ duplicate$
  add.period$
  text.length$
  'would.add.period.textlen :=
  duplicate$
  text.length$
  would.add.period.textlen =
    { #0 }
    { #1 }
  if$
}

FUNCTION {fin.entry}
{ would.add.period
    { "\relax" * write$ newline$
      "\mciteBstWouldAddEndPuncttrue" write$ newline$
      "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"
      write$ newline$
      "{\mcitedefaultendpunct}{\mcitedefaultseppunct}\relax"
    }
    { "\relax" * write$ newline$
      "\mciteBstWouldAddEndPunctfalse" write$ newline$
      "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"
      write$ newline$
      "{}{\mcitedefaultseppunct}\relax"
    }
  if$
  write$
  newline$
  "\EndOfBibitem" write$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "\emph{" swap$ * "}" * }
  if$
}

FUNCTION {boldface}
{ duplicate$ empty$
    { pop$ "" }
    { "\textbf{" swap$ * "}" * }
  if$
}

FUNCTION {paren}
{ duplicate$ empty$
    { pop$ "" }
    { "(" swap$ * ")" * }
  if$
}

FUNCTION {bbl.and}
{ "and" }

FUNCTION {bbl.chapter}
{ "Chapter" }

FUNCTION {bbl.editor}
{ "Ed." }

FUNCTION {bbl.editors}
{ "Eds." }

FUNCTION {bbl.edition}
{ "ed." }

FUNCTION {bbl.etal}
{ "et~al." }

FUNCTION {bbl.in}
{ "In" }

FUNCTION {bbl.inpress}
{ "in press" }

FUNCTION {bbl.msc}
{ "M.Sc.\ thesis" }

FUNCTION {bbl.page}
{ "p" }

FUNCTION {bbl.pages}
{ "pp" }

FUNCTION {bbl.phd}
{ "Ph.D.\ thesis" }

FUNCTION {bbl.submitted}
{ "submitted for publication" }

FUNCTION {bbl.techreport}
{ "Technical Report" }

FUNCTION {bbl.version}
{ "version" }

FUNCTION {bbl.volume}
{ "Vol." }

FUNCTION {bbl.first}
{ "1st" }

FUNCTION {bbl.second}
{ "2nd" }

FUNCTION {bbl.third}
{ "3rd" }

FUNCTION {bbl.fourth}
{ "4th" }

FUNCTION {bbl.fifth}
{ "5th" }

FUNCTION {bbl.st}
{ "st" }

FUNCTION {bbl.nd}
{ "nd" }

FUNCTION {bbl.rd}
{ "rd" }

FUNCTION {bbl.th}
{ "th" }

FUNCTION {eng.ord}
{ duplicate$ "1" swap$ *
  #-2 #1 substring$ "1" =
     { bbl.th * }
     { duplicate$ #-1 #1 substring$
       duplicate$ "1" =
         { pop$ bbl.st * }
         { duplicate$ "2" =
             { pop$ bbl.nd * }
             { "3" =
                 { bbl.rd * }
                 { bbl.th * }
               if$
             }
           if$
          }
       if$
     }
   if$
}

FUNCTION{is.a.digit}
{ duplicate$ "" =
    {pop$ #0}
    {chr.to.int$ #48 - duplicate$
     #0 < swap$ #9 > or not}
  if$
}

FUNCTION{is.a.number}
{
  { duplicate$ #1 #1 substring$ is.a.digit }
    {#2 global.max$ substring$}
  while$
  "" =
}

FUNCTION {extract.num}
{ duplicate$ 't :=
  "" 's :=
  { t empty$ not }
  { t #1 #1 substring$
    t #2 global.max$ substring$ 't :=
    duplicate$ is.a.number
      { s swap$ * 's := }
      { pop$ "" 't := }
    if$
  }
  while$
  s empty$
    'skip$
    { pop$ s }
  if$
}

FUNCTION {chr.to.value}
{ chr.to.int$ #48 -
  duplicate$ duplicate$
  #0 < swap$ #9 > or
    { #48 + int.to.chr$
      " is not a number..." *
      warning$
     pop$ #0
    }
    {}
  if$
}


%% Some tricks from "Tame the BeaST" to convert a string
%% to a number
INTEGERS { a b }

FUNCTION {mult}
{ 'a :=
  'b :=
  b #0 <
    {#-1 #0 b - 'b :=}
    {#1}
  if$
  #0
  {b #0 >}
    { a +
      b #1 - 'b :=
    }
  while$
  swap$
    'skip$
    {#0 swap$ -}
    if$
}

FUNCTION {str.to.int.aux}
{ {duplicate$ empty$ not}
    { swap$ #10 mult 'a :=
      duplicate$ #1 #1 substring$
      chr.to.value a +
      swap$
     #2 global.max$ substring$
    }
  while$
  pop$
}

FUNCTION {str.to.int}
{ duplicate$ #1 #1 substring$ "-" =
    {#1 swap$ #2 global.max$ substring$}
    {#0 swap$}
  if$
  #0 swap$ str.to.int.aux
  swap$
    {#0 swap$ -}
    {}
  if$
}

FUNCTION {bibinfo.check}
{ swap$
  duplicate$ missing$
    { pop$ pop$
      ""
    }
    { duplicate$ empty$
        {
          swap$ pop$
        }
        { swap$
          pop$
        }
      if$
    }
  if$
}

FUNCTION {convert.edition}
{ extract.num "l" change.case$ 's :=
  s "first" = s "1" = or
    { bbl.first 't := }
    { s "second" = s "2" = or
        { bbl.second 't := }
        { s "third" = s "3" = or
            { bbl.third 't := }
            { s "fourth" = s "4" = or
                { bbl.fourth 't := }
                { s "fifth" = s "5" = or
                    { bbl.fifth 't := }
                    { s #1 #1 substring$ is.a.number
                        { s eng.ord 't := }
                        { edition 't := }
                      if$
                    }
                  if$
                }
              if$
            }
          if$
        }
      if$
    }
  if$
  t
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { " " }
  if$
  swap$ * *
}

FUNCTION {space.connect}
{ " " swap$ * * }

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
  numnames etal.number > etal.number #0 > and
    { s #1 "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't :=
      t bbl.etal space.connect
    }
    {
       { namesleft #0 > }
       { s nameptr "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't :=
           nameptr #1 >
             { namesleft #1 >
%<!bio>               { add.comma.or.semicolon t * }
%<bio>               { add.comma t * }
               { numnames #2 >
                 { "" * }
                 'skip$
               if$
               t "others," =
                 { bbl.etal space.connect }
%<!bio>                 { add.comma.or.semicolon t * }
%<bio>                 { add.comma bbl.and space.connect t space.connect }
               if$
               }
             if$
             }
           't
         if$
         nameptr #1 + 'nameptr :=
         namesleft #1 - 'namesleft :=
         }
     while$
  }
  if$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { #1 'author.or.editor :=
%<!bio>        #1 'separate.by.semicolon :=
      author format.names
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { #2 'author.or.editor :=
%<!bio>        #0 'separate.by.semicolon :=
      editor format.names
      add.comma
      editor num.names$ #1 >
        { bbl.editors }
        { bbl.editor }
      if$
      *
    }
  if$
}

FUNCTION {n.separate.multi}
{ 't :=
  ""
  #0 'numnames :=
  t text.length$ #4 > t is.a.number and
    {
      { t empty$ not }
      { t #-1 #1 substring$ is.a.number
          { numnames #1 + 'numnames := }
          { #0 'numnames := }
        if$
        t #-1 #1 substring$ swap$ *
        t #-2 global.max$ substring$ 't :=
        numnames #4 =
          { duplicate$ #1 #1 substring$ swap$
            #2 global.max$ substring$
            "," swap$ * *
            #1 'numnames :=
          }
          'skip$
        if$
      }
      while$
    }
    { t swap$ * }
  if$
}

FUNCTION {format.bvolume}
{ volume empty$
    { "" }
    { bbl.volume volume tie.or.space.connect }
  if$
}

FUNCTION {format.title.noemph}
{ 't :=
  t empty$
    { "" }
    { t }
  if$
}

FUNCTION {format.title}
{ 't :=
  t empty$
    { "" }
    { t emphasize }
  if$
}

%% The add.title function only does anything if the appropriate
%% flag is set.
FUNCTION {add.title}
{ is.use.title
    { title format.title.noemph "title" output.check
      new.sentence }
    'skip$
  if$
}

FUNCTION {format.number.series}
{ volume empty$
    { number empty$
       { series field.or.null }
       { series empty$
         { "There is a number but no series in " cite$ * warning$ }
         { series number space.connect }
       if$
       }
      if$
    }
    { "" }
  if$
}

FUNCTION {format.url}
{ url empty$
    { "" }
    { new.sentence "\url{" url * "}" * }
  if$
}

FUNCTION {format.full.names}
{'s :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      "{vv~}{ll}" format.name$ 't :=
      nameptr #1 >
        {
          namesleft #1 >
            { ", " * t * }
            {
              numnames #2 >
                { "," * }
                'skip$
              if$
              t "others" =
                { bbl.etal * }
                { bbl.and space.connect t space.connect }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {author.editor.full}
{ author empty$
    { editor empty$
        { "" }
        { editor format.full.names }
      if$
    }
    { author format.full.names }
  if$
}

FUNCTION {author.full}
{ author empty$
    { "" }
    { author format.full.names }
  if$
}

FUNCTION {editor.full}
{ editor empty$
    { "" }
    { editor format.full.names }
  if$
}

FUNCTION {make.full.names}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.full
    { type$ "proceedings" =
        'editor.full
        'author.full
      if$
    }
  if$
}

FUNCTION {output.bibitem}
{ newline$
  "\bibitem[" write$
  label write$
  ")" make.full.names duplicate$ short.list =
     { pop$ }
     { * }
   if$
  "]{" * write$
  cite$ write$
  "}" write$
  newline$
  ""
  before.all 'output.state :=
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
    { t #1 #2 substring$ "--" = not
        { "--" *
          t #2 global.max$ substring$ 't :=
        }
        {   { t #1 #1 substring$ "-" = }
        { "-" *
          t #2 global.max$ substring$ 't :=
        }
          while$
        }
      if$
    }
    { t #1 #1 substring$ *
      t #2 global.max$ substring$ 't :=
    }
      if$
    }
  while$
}

%<*!bio>
FUNCTION {format.date}
{ year empty$
    { "" }
    { year boldface }
  if$
}

%</!bio>
%<*bio>
FUNCTION {format.date}
{ year empty$
    { "" }
    { "(" year ")" * * }
  if$
}

%</bio>

FUNCTION {format.bdate}
{ year empty$
    { "There's no year in " cite$ * warning$ }
    'year
  if$
}

FUNCTION {either.or.check}
{ empty$
    'pop$
    { "Can't use both " swap$ * " fields in " * cite$ * warning$ }
  if$
}

FUNCTION {format.edition}
{ edition duplicate$ empty$
    'skip$
    { convert.edition
      bbl.edition bibinfo.check
      " " * bbl.edition *
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
        { #1 'multiresult := }
        { t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}
{ pages empty$
    { "" }
    { pages multi.page.check
      { bbl.pages pages n.dashify tie.or.space.connect }
      { bbl.page pages tie.or.space.connect }
    if$
    }
  if$
}

FUNCTION {format.pages.required}
{ pages empty$
    { ""
      "There are no page numbers for " cite$ * warning$
      output
    }
    { pages multi.page.check
      { bbl.pages pages n.dashify tie.or.space.connect }
      { bbl.page pages tie.or.space.connect }
    if$
    }
  if$
}

FUNCTION {format.pages.nopp}
{ pages empty$
    { ""
      "There are no page numbers for " cite$ * warning$
      output
    }
    { pages multi.page.check
      { pages n.dashify space.connect }
      { pages space.connect }
    if$
    }
  if$
}

FUNCTION {format.pages.patent}
{ pages empty$
    { "There is no patent number for " cite$ * warning$ }
    { pages multi.page.check
      { pages n.dashify }
      { pages n.separate.multi }
      if$
    }
  if$
}

FUNCTION {format.vol.pages}
{ volume emphasize field.or.null
  duplicate$ empty$
    { pop$ format.pages.required }
    { add.comma pages n.dashify * }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
    { bbl.chapter }
    { type "l" change.case$ }
      if$
      chapter tie.or.space.connect
      pages empty$
    'skip$
    { add.comma format.pages * }
      if$
    }
  if$
}

FUNCTION {format.title.in}
{ 's :=
  s empty$
    { "" }
    { editor empty$
      { bbl.in s format.title space.connect }
      { bbl.in s format.title space.connect
        add.semicolon format.editors *
      }
    if$
    }
  if$
}

FUNCTION {format.pub.address}
{ publisher empty$
    { "" }
    { address empty$
        { publisher }
        { publisher add.colon address *}
      if$
    }
  if$
}

FUNCTION {format.school.address}
{ school empty$
    { "" }
    { address empty$
        { school }
        { school add.colon address *}
      if$
    }
  if$
}

FUNCTION {format.organization.address}
{ organization empty$
    { "" }
    { address empty$
        { organization }
        { organization add.colon address *}
      if$
    }
  if$
}

FUNCTION {format.version}
{ edition empty$
    { "" }
    { bbl.version edition tie.or.space.connect }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  year empty$ note empty$ url empty$
  and and and and and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {empty.doi.note}
{ doi empty$ note empty$ and
    { "Need either a note or DOI for " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type emphasize
    }
  if$
}

FUNCTION {article}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
%<bio>  format.date "year" output.check
%<bio>  after.item 'output.state :=
  add.title
  journal emphasize "journal" output.check
  after.item 'output.state :=
%<!bio>  format.date "year" output.check
  volume empty$
    { ""
      format.pages.nopp output
    }
    { format.vol.pages output }
  if$
  note output
  fin.entry
}

FUNCTION {book}
{ output.bibitem
  author empty$
    { booktitle empty$
        { title format.title "title" output.check }
        { booktitle format.title "booktitle" output.check }
      if$
      format.edition output
      new.block
      editor empty$
        { "Need either an author or editor for " cite$ * warning$ }
        { "" format.editors * "editor" output.check }
      if$
    }
    { format.authors output
      after.item 'output.state :=
      "author and editor" editor either.or.check
      booktitle empty$
        { title format.title "title" output.check }
        { booktitle format.title "booktitle" output.check }
      if$
      format.edition output
    }
  if$
  new.block
  format.number.series output
  new.block
  format.pub.address "publisher" output.check
  format.bdate "year" output.check
  new.block
  format.bvolume output
  pages empty$
    'skip$
    { format.pages output }
  if$
  note output
  fin.entry
}

FUNCTION {booklet}
{ output.bibitem
  format.authors output
  after.item 'output.state :=
  title format.title "title" output.check
  howpublished output
  address output
  format.date output
  note output
  fin.entry
}

FUNCTION {inbook}
{ output.bibitem
  author empty$
    { title format.title "title" output.check
      format.edition output
      new.block
      editor empty$
      { "Need at least an author or an editor for " cite$ * warning$ }
      { "" format.editors * "editor" output.check }
    if$
    }
    { format.authors output
      after.item 'output.state :=
      title format.title.in "title" output.check
      format.edition output
    }
  if$
  new.block
  format.number.series output
  new.block
  format.pub.address "publisher" output.check
  format.bdate "year" output.check
  new.block
  format.bvolume output
  format.chapter.pages "chapter and pages" output.check
  note output
  fin.entry
}

FUNCTION {incollection}
{ output.bibitem
  author empty$
    { booktitle format.title "booktitle" output.check
      format.edition output
      new.block
      editor empty$
        { "Need at least an author or an editor for " cite$ * warning$ }
        { "" format.editors * "editor" output.check }
      if$
    }
    { format.authors output
      after.item 'output.state :=
      title empty$
        'skip$
        { title format.title.noemph output }
      if$
      after.sentence 'output.state :=
      booktitle format.title.in "booktitle" output.check
      format.edition output
    }
  if$
  new.block
  format.number.series output
  new.block
  format.pub.address "publisher" output.check
  format.bdate "year" output.check
  new.block
  format.bvolume output
  format.chapter.pages "chapter and pages" output.check
  note output
  fin.entry
}

FUNCTION {inpress}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  journal emphasize "journal" output.check
  doi empty$
    {  bbl.inpress output }
    {  after.item 'output.state :=
       format.date output
       "DOI:" doi tie.or.space.connect output
    }
  if$
  note output
  fin.entry
}

FUNCTION {inproceedings}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  title empty$
    'skip$
    { title format.title.noemph output
      after.sentence 'output.state :=
    }
  if$
  booktitle format.title output
  address output
  format.bdate "year" output.check
  pages empty$
    'skip$
    { new.block
      format.pages output }
  if$
  note output
  fin.entry
}

FUNCTION {manual}
{ output.bibitem
  format.authors output
  after.item 'output.state :=
  title format.title "title" output.check
  format.version output
  new.block
  format.organization.address output
  format.bdate output
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  bbl.msc format.thesis.type output
  format.school.address "school" output.check
  format.bdate "year" output.check
  note output
  fin.entry
}

FUNCTION {misc}
{ output.bibitem
  format.authors output
  after.item 'output.state :=
  title empty$
    'skip$
    { title format.title output }
  if$
  howpublished output
  year output
  format.url output
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {patent}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  journal "journal" output.check
  after.item 'output.state :=
  format.pages.patent "pages" output.check
  format.bdate "year" output.check
  note output
  fin.entry
}

FUNCTION {phdthesis}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  bbl.phd format.thesis.type output
  format.school.address "school" output.check
  format.bdate "year" output.check
  note output
  fin.entry
}

FUNCTION {proceedings}
{ output.bibitem
  title format.title.noemph "title" output.check
  address output
  format.bdate "year" output.check
  pages empty$
    'skip$
    { new.block
      format.pages output }
  if$
  note output
  fin.entry
}

FUNCTION {techreport}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  title format.title "title" output.check
  new.block
  type empty$
    'bbl.techreport
    'type
  if$
  number empty$
    'skip$
    { number tie.or.space.connect }
  if$
  output
  format.pub.address output
  format.bdate "year" output.check
  pages empty$
    'skip$
    { new.block
      format.pages output }
  if$
  note output
  fin.entry
}

FUNCTION {unpublished}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  journal empty$
    'skip$
    { journal emphasize "journal" output.check }
  if$
  doi empty$
    {  note output }
    {  after.item 'output.state :=
       format.date output
       "DOI:" doi tie.or.space.connect output
    }
  if$
  fin.entry
  empty.doi.note
}

%% Convert the strings "yes" or "no" to #1 or #0 respectively
FUNCTION {yes.no.to.int}
{ "l" change.case$ duplicate$
    "yes" =
    { pop$  #1 }
    { duplicate$ "no" =
        { pop$ #0 }
        { "unknown Boolean " quote$ * swap$ * quote$ *
          " in " * cite$ * warning$
          #0
        }
      if$
    }
  if$
}

%% Using the same mechanism as in IEEEtrans, control of
%% output can be achieved using a special entry type.
FUNCTION {Control}
{ ctrl-use-title
  empty$
    { skip$ }
    { ctrl-use-title
      yes.no.to.int
      'is.use.title := }
  if$
  ctrl-etal-number
  empty$
    { skip$ }
    { ctrl-etal-number
      str.to.int
      'etal.number := }
  if$
}

FUNCTION {conference} {inproceedings}

FUNCTION {other} {patent}

FUNCTION {default.type} {misc}

MACRO {jan} {"Jan."}
MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"Aug."}
MACRO {sep} {"Sept."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}

%% The ACS journals by CODEN
MACRO {achre4} {"Acc.\ Chem.\ Res."}
MACRO {acbcct} {"ACS Chem.\ Biol."}
MACRO {ancac3} {"ACS Nano"}
MACRO {ancham} {"Anal.\ Chem."}
MACRO {bichaw} {"Biochemistry"}
MACRO {bcches} {"Bioconjugate Chem."}
MACRO {bomaf6} {"Biomacromolecules"}
MACRO {bipret} {"Biotechnol.\ Prog."}
MACRO {crtoec} {"Chem.\ Res.\ Toxicol."}
MACRO {chreay} {"Chem.\ Rev."}
MACRO {cmatex} {"Chem.\ Mater."}
MACRO {cgdefu} {"Cryst.\ Growth Des."}
MACRO {enfuem} {"Energy Fuels"}
MACRO {esthag} {"Environ.\ Sci.\ Technol."}
MACRO {iechad} {"Ind.\ Eng.\ Chem.\ Res."}
MACRO {inoraj} {"Inorg.\ Chem."}
MACRO {jafcau} {"J.~Agric.\ Food Chem."}
MACRO {jceaax} {"J.~Chem.\ Eng.\ Data"}
MACRO {jcisd8} {"J.~Chem.\ Inf.\ Model."}
MACRO {jctcce} {"J.~Chem.\ Theory Comput."}
MACRO {jcchff} {"J. Comb. Chem."}
MACRO {jmcmar} {"J. Med. Chem."}
MACRO {jnprdf} {"J. Nat. Prod."}
MACRO {joceah} {"J.~Org.\ Chem."}
MACRO {jpcafh} {"J.~Phys.\ Chem.~A"}
MACRO {jpcbfk} {"J.~Phys.\ Chem.~B"}
MACRO {jpccck} {"J.~Phys.\ Chem.~C"}
MACRO {jprobs} {"J.~Proteome Res."}
MACRO {jacsat} {"J.~Am.\ Chem.\ Soc."}
MACRO {langd5} {"Langmuir"}
MACRO {mamobx} {"Macromolecules"}
MACRO {mpohbp} {"Mol.\ Pharm."}
MACRO {nalefd} {"Nano Lett."}
MACRO {orlef7} {"Org.\ Lett."}
MACRO {oprdfk} {"Org.\ Proc.\ Res.\ Dev."}
MACRO {orgnd7} {"Organometallics"}

READ

FUNCTION {initialize.controls}
{ default.is.use.title 'is.use.title :=
  default.etal.number 'etal.number :=
}

EXECUTE {initialize.controls}

INTEGERS { len }

FUNCTION {chop.word}
{ 's :=
  'len :=
  s #1 len substring$ =
    { s len #1 + global.max$ substring$ }
    's
  if$
}

FUNCTION {format.lab.names}
{ 's :=
  s #1 "{vv~}{ll}" format.name$
  s num.names$ duplicate$
  #2 >
    { pop$ bbl.etal space.connect }
    { #2 <
        'skip$
        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
            { bbl.etal space.connect }
            { bbl.and space.connect s #2 "{vv~}{ll}" format.name$ space.connect }
          if$
        }
      if$
    }
  if$
}

FUNCTION {author.key.label}
{ author empty$
    { key empty$
        { cite$ #1 #3 substring$ }
        'key
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {author.editor.key.label}
{ author empty$
    { editor empty$
        { key empty$
            { cite$ #1 #3 substring$ }
            'key
          if$
        }
        { editor format.lab.names }
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {author.key.organization.label}
{ author empty$
    { key empty$
        { organization empty$
            { cite$ #1 #3 substring$ }
            { "The " #4 organization chop.word #3 text.prefix$ }
          if$
        }
        'key
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {editor.key.organization.label}
{ editor empty$
    { key empty$
        { organization empty$
            { cite$ #1 #3 substring$ }
            { "The " #4 organization chop.word #3 text.prefix$ }
          if$
        }
        'key
      if$
    }
    { editor format.lab.names }
  if$
}

FUNCTION {calc.short.authors}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.key.label
    { type$ "proceedings" =
        'editor.key.organization.label
        { type$ "manual" =
            'author.key.organization.label
            'author.key.label
          if$
        }
      if$
    }
  if$
  'short.list :=
}

FUNCTION {calc.label}
{ calc.short.authors
  short.list
  "("
  *
  year duplicate$ empty$
  short.list key field.or.null = or
     { pop$ "" }
     'skip$
  if$
  *
  'label :=
}

ITERATE {calc.label}

STRINGS { longest.label last.label next.extra }

INTEGERS { longest.label.width last.extra.num number.label }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #0 int.to.chr$ 'last.label :=
  "" 'next.extra :=
  #0 'longest.label.width :=
  #0 'last.extra.num :=
  #0 'number.label :=
}

FUNCTION {forward.pass}
{ last.label label =
    { last.extra.num #1 + 'last.extra.num :=
      last.extra.num int.to.chr$ 'extra.label :=
    }
    { "a" chr.to.int$ 'last.extra.num :=
      "" 'extra.label :=
      label 'last.label :=
    }
  if$
  number.label #1 + 'number.label :=
}

EXECUTE {initialize.longest.label}

ITERATE {forward.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\ifx\mcitethebibliography\mciteundefinedmacro"
  write$ newline$
  "\PackageError"
  write$
%<!bio>  "{achemso.bst}"
%<bio>  "{biochem.bst}"
  write$
  "{mciteplus.sty has not been loaded}"
  write$ newline$
  "{This bibstyle requires the use of the mciteplus package.}\fi"
  write$ newline$
  "\begin{mcitethebibliography}{"  number.label int.to.str$  * "}" *
  write$ newline$
  "\providecommand*{\natexlab}[1]{#1}"
  write$ newline$
  "\mciteSetBstSublistMode{f}"
  write$ newline$
  "\mciteSetBstMaxWidthForm{subitem}{(\alph{mcitesubitemcount})}"
  write$ newline$
  "\mciteSetBstSublistLabelBeginEnd{\mcitemaxwidthsubitemform\space}"
  write$ newline$
  "{\relax}{\relax}"
  write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{mcitethebibliography}" write$ newline$
}

EXECUTE {end.bib}
%</bst>
%<*jawltxdoc>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{jawltxdoc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[final]{listings,graphicx,microtype}
\usepackage[scaled=0.95]{helvet}
\usepackage[version=3]{mhchem}
\usepackage[osf]{mathpazo}
\usepackage{booktabs,array,url,courier,xspace,varioref}
\usepackage{upgreek,ifpdf,float,caption,longtable,babel}
\begingroup
  \@ifundefined{eTeXversion}
    {\aftergroup\@gobble}
    {\aftergroup\@firstofone}
\endgroup
  {\usepackage{etoolbox}}
\floatstyle{plaintop}
\restylefloat{table}
\labelformat{figure}{\figurename~#1}
\labelformat{table}{\tablename~#1}
\ifpdf
  \usepackage{embedfile}
  \embedfile[%
    stringmethod=escape,%
    mimetype=plain/text,%
    desc={LaTeX docstrip source archive for package `\jobname'}%
    ]{\jobname.dtx}
\fi
\IfFileExists{\jobname.sty}
  {\usepackage{\jobname}}{}
\usepackage[numbered]{hypdoc}
\setcounter{IndexColumns}{2}
\newlength\LaTeXwidth
\newlength\LaTeXoutdent
\newlength\LaTeXgap
\setlength\LaTeXgap{1em}
\setlength\LaTeXoutdent{-0.15\textwidth}
\newbox\lst@samplebox
\edef\LaTeXexamplefile{\jobname.tmp}
\lst@RequireAspects{writefile}
\lstnewenvironment{LaTeXexample}[1][example]{%
  \global\let\lst@intname\@empty
  \ifcsname LaTeXcode#1\endcsname
    \expandafter\let\expandafter\LaTeXcode
      \csname LaTeXcode#1\endcsname
    \expandafter\let\expandafter\LaTeXcodeend
      \csname LaTeXcode#1end\endcsname
  \else
    \PackageError{jawltxdoc}
      {Undefined example type `#1'}
      \@ehd
    \let\LaTeXcode\relax
    \let\LaTeXcodeend\relax
  \fi
  \LaTeXcode}
  {\lst@EndWriteFile
   \LaTeXcodeend}
\newcommand*{\LaTeXcodeexample}{%
  \setbox\lst@samplebox=\hbox\bgroup
  \LaTeXcodefloat}
\let\LaTeXcoderesultonly\LaTeXcodeexample
\newcommand*{\LaTeXcodeexampleend}{%
  \egroup
  \setlength\LaTeXwidth{\wd\lst@samplebox}%
  \begin{list}{}{%
    \setlength\itemindent{0pt}
    \setlength\leftmargin\LaTeXoutdent
    \setlength\rightmargin{0pt}}%
    \item
      \setlength\LaTeXoutdent{-0.15\textwidth}
      \begin{minipage}[c]{%
        \textwidth-\LaTeXwidth-\LaTeXoutdent-\LaTeXgap}
        \LaTeXcodefloatend
      \end{minipage}%
      \hfill
      \begin{minipage}[c]{\LaTeXwidth}%
        \hbox to\linewidth{\box\lst@samplebox\hss}%
      \end{minipage}%
  \end{list}}
\newcommand*{\LaTeXcodefloat}{%
  \setkeys{lst}{tabsize=4,gobble=3,breakindent=0pt,
    basicstyle=\small\ttfamily,basewidth=0.51em,
    keywordstyle=\color{blue}}%
  \lst@BeginAlsoWriteFile{\LaTeXexamplefile}}
\let\LaTeXcodenoexample\LaTeXcodefloat
\let\LaTeXcodenoexampleend\@empty
\newcommand*{\LaTeXcodefloatend}{%
  \MakePercentComment\catcode`\^^M=10\relax
  \small
  {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}%
    {\lst@ProcessTabulator}}%
    \leavevmode \input{\LaTeXexamplefile}}%
  \MakePercentIgnore}
\newcommand*{\LaTeXcoderesultonlyend}{\egroup\LaTeXcodefloatend}
\lstnewenvironment{BibTeXexample}{%
  \global\let\lst@intname\@empty
  \setbox\lst@samplebox=\hbox\bgroup
  \setkeys{lst}{tabsize=4,gobble=3,breakindent=0pt,
    basicstyle=\small\ttfamily,basewidth=0.51em,
    keywordstyle=\color{black}}
  \lst@BeginAlsoWriteFile{\LaTeXexamplefile}}
 {\lst@EndWriteFile
   \LaTeXcodeexampleend}
\newcommand*{\DescribeOption}{%
  \leavevmode\@bsphack\begingroup\MakePrivateLetters
  \Describe@Option}
\newcommand*{\Describe@Option}[1]{\endgroup
              \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
              \SpecialOptionIndex{#1}\@esphack\ignorespaces}
\newcommand*{\SpecialOptionIndex}[1]{\@bsphack
    \index{#1\actualchar{\protect\ttfamily#1}
           (option)\encapchar usage}%
    \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}%
      \encapchar usage}\@esphack}
\newcommand*{\indexopt}[1]{\DescribeOption{#1}\opt{#1}}
\newcommand*{\DescribeOptionInfo}[2]{%
  \DescribeOption{#1}%
  \opt{#1=\meta{#2}}\xspace}
\newcommand*{\ofixarg}[1]{%
  {\ttfamily[}%
  \ifmmode \expandafter \nfss@text \fi
  {%
    \meta@font@select
    \edef\meta@hyphen@restore{%
      \hyphenchar\the\font\the\hyphenchar\font}%
    \hyphenchar\font\m@ne
    \language\l@nohyphenation
    #1\/%
    \meta@hyphen@restore
    }%
    {\ttfamily]}}
\newcommand*{\pkg}[1]{\textsf{#1}}
\newcommand*{\currpkg}{\pkg{\jobname}\xspace}
\newcommand*{\opt}[1]{\texttt{#1}}
\newcommand*{\defaultopt}[1]{\opt{\textbf{#1}}}
\newcommand*{\file}[1]{\texttt{#1}}
\newcommand*{\ext}[1]{\file{.#1}}
\newcommand*{\latin}[1]{\emph{#1}}
\newcommand*{\etc}{%
  \@ifnextchar.
    {\latin{etc}}
    {\latin{etc}.\xspace}}
\newcommand*{\eg}{%
  \@ifnextchar.
    {\latin{e.g}}
    {\latin{e.g}.\xspace}}
\newcommand*{\ie}{%
  \@ifnextchar.
    {\latin{i.e}}
    {\latin{i.e}.\xspace}}
\newcommand*{\etal}{%
  \@ifnextchar.
    {\latin{et~al.}}
    {\latin{et~al}.\xspace}}
\newcommand*{\AMS}{{\protect\usefont{OMS}{cmsy}{m}{n}%
  A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
\providecommand*{\eTeX}{\ensuremath{\varepsilon}-\TeX}
\DeclareRobustCommand*{\XeTeX}
  {X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.1667em\TeX}
\providecommand*{\CTAN}{\textsc{ctan}}
\@ifpackageloaded{etoolbox}
  {\patchcmd{\@addmarginpar}
    {\@latex@warning@no@line {Marginpar on page \thepage\space moved}}
    {\relax}{}{}}
  {}
\newcounter{argument}
\g@addto@macro\endmacro{\setcounter{argument}{0}}
\newcommand*\darg[1]{%
  \stepcounter{argument}%
  {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces}
\newcommand*\doarg[1]{%
  \stepcounter{argument}%
  {\ttfamily\makebox[0pt][r]{[}%
   \char`\#\theargument]:~}#1\par\noindent\ignorespaces}
%</jawltxdoc>
%\fi
