% \iffalse meta-comment % !TEX program = pdflatex % !TEX encoding = ISO-8859-1 %<*internal> \iffalse % %<*readme> ---------------------------------------------------------------- achemso --- Support for submissions to American Chemical Society journals 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 ---------------------------------------------------------------- The achemso bundle provides a LaTeX class file and BibTeX style file in accordance with the requirements of the American Chemical Society (ACS). 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. % %<*internal> \fi \def\nameofplainTeX{plain} \ifx\fmtname\nameofplainTeX\else \expandafter\begingroup \fi % %<*install> \input docstrip.tex \keepsilent \askforoverwritefalse \preamble ---------------------------------------------------------------- achemso --- Support for submissions to American Chemical Society journals 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 \postamble Originally developed by Mats Dahlgren Copyright (C) 1996-1998 by Mats Dahlgren Copyright (C) 2008-2009 by Joseph Wright 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. It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this license or (at your option) any later version. The latest version of this license is in the file: http://www.latex-project.org/lppl.txt This work is "maintained" (as per LPPL maintenance status) by Joseph Wright. This work consists of the file achemso.dtx and the derived files achemso.pdf, achemso.bib, achemso.cls, achemso.ins, achemso.sty, achemso-demo.tex, natmove.sty and a number of configuration files. \endpostamble \usedir{tex/latex/achemso} \generate{ \file{\jobname.cls}{\from{\jobname.dtx}{class}} \file{\jobname.sty}{\from{\jobname.dtx}{package}} \file{natmove.sty}{\from{\jobname.dtx}{natmove}} } \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{jacsat.cfg}{\from{\jobname.dtx}{jacsat}} \file{jafcau.cfg}{\from{\jobname.dtx}{jafcau}} \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}} } \usedir{bibtex/bst/achemso} \generate{ \file{achemso.bst}{\from{\jobname.dtx}{bst}} \file{biochem.bst}{\from{\jobname.dtx}{bst,bio}} } % %\endbatchfile %<*internal> \usedir{source/latex/achemso} \generate{ \file{\jobname.ins}{\from{\jobname.dtx}{install}} } \nopreamble\nopostamble \usedir{doc/latex/achemso} \generate{ \file{README.txt}{\from{\jobname.dtx}{readme}} \file{achemso-demo.tex}{\from{\jobname.dtx}{demo}} \file{achemso.bib}{\from{\jobname.dtx}{bib}} } \ifx\fmtname\nameofplainTeX \expandafter\endbatchfile \else \expandafter\endgroup \fi \immediate\write18{bibtex8 --wolfgang achemso} \immediate\write18{makeindex -s gglo.ist -o achemso.gls achemso.glo} \immediate\write18{makeindex -s gind.ist -o achemso.ind achemso.idx} % %<*package|class|natmove> \NeedsTeXFormat{LaTeX2e} % %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage[T1]{fontenc} \usepackage{achemso,array,booktabs,lmodern} \usepackage[osf]{mathpazo} \usepackage[scaled=0.95]{helvet} \usepackage[final]{listings,microtype} \usepackage[numbered]{hypdoc} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{\jobname.dtx} \end{document} % % \fi % %\CheckSum{1981} % %\GetFileInfo{\jobname.sty} % %\makeatletter % %^^A \DescribeOption is in l3doc but not ltxdoc %\newcommand*{\DescribeOption}{^^A % \leavevmode % \@bsphack % \begingroup % \MakePrivateLetters % \Describe@Option %} %\newcommand*{\Describe@Option}[1]{^^A % \endgroup % \marginpar{^^A % \raggedleft % \PrintDescribeEnv{#1}^^A % }% % \SpecialOptionIndex{#1}^^A % \@esphack % \ignorespaces %} %\newcommand*{\SpecialOptionIndex}[1]{^^A % \@bsphack % \index{^^A % #1\actualchar{\protect\ttfamily#1} (option)\encapchar usage^^A % }^^A % \index{^^A % options:\levelchar#1\actualchar{\protect\ttfamily#1} % \encapchar usage^^A % }^^A % \@esphack %} % %^^A For creating examples with nice highlighting of code, and so %^^A on; based on the system used in the listings source (lstsample). %\lst@RequireAspects{writefile} %\newsavebox{\LaTeXdemo@box} %\lstnewenvironment{LaTeXdemo}[1][code and example]{^^A % \global\let\lst@intname\@empty % \expandafter\let\expandafter\LaTeXdemo@end % \csname LaTeXdemo@#1@end\endcsname % \@nameuse{LaTeXdemo@#1}^^A %}{^^A % \LaTeXdemo@end %} %\newcommand*\LaTeXdemo@new[3]{^^A % \expandafter\newcommand\expandafter*\expandafter % {\csname LaTeXdemo@#1\endcsname}{#2}^^A % \expandafter\newcommand\expandafter*\expandafter % {\csname LaTeXdemo@#1@end\endcsname}{#3}^^A %} %\newcommand*\LaTeXdemo@common{^^A % \setkeys{lst}{ % basicstyle = \small\ttfamily, % basewidth = 0.51em, % gobble = 3, % keywordstyle = \color{blue}, % language = [LaTeX]{TeX}, % moretexcs = { % affiliation, % alsoaffiliation, % altaffiliation, % natmovechars % } % }^^A %} %\newcommand*\LaTeXdemo@input{^^A % \MakePercentComment % \catcode`\^^M=10\relax % \small % \begingroup % \setkeys{lst}{ % SelectCharTable=\lst@ReplaceInput{\^\^I}{\lst@ProcessTabulator} % }^^A % \leavevmode % \input{\jobname.tmp}^^A % \endgroup % \MakePercentIgnore %} %\LaTeXdemo@new{code and example}{^^A % \setbox\LaTeXdemo@box=\hbox\bgroup % \lst@BeginAlsoWriteFile{\jobname.tmp}^^A % \LaTeXdemo@common %}{^^A % \lst@EndWriteFile % \egroup % \begin{center} % \ifdim\wd\LaTeXdemo@box>0.48\linewidth\relax % \hbox to\linewidth{\box\LaTeXdemo@box\hss}^^A % \begin{minipage}{\linewidth} % \LaTeXdemo@input % \end{minipage} % \else % \begin{minipage}{0.48\linewidth} % \LaTeXdemo@input % \end{minipage} % \hfill % \begin{minipage}{0.48\linewidth} % \hbox to\linewidth{\box\LaTeXdemo@box\hss}^^A % \end{minipage} % \fi % \end{center} %} %\LaTeXdemo@new{code only}{^^A % \LaTeXdemo@common %}{^^A %} % %\providecommand*{\eTeX}{\ensuremath{\varepsilon}-\TeX} %\providecommand*{\file}{\texttt} %\providecommand*{\opt}{\texttt} %\providecommand*{\pkg}{\textsf} % %\newcommand*{\ACS}{\textsc{acs}} % %\makeatother % %\title{^^A % \textsf{achemso} --- Support for submissions to American Chemical % Society journals\thanks{^^A % This file describes version \fileversion, last revised % \filedate.^^A % }^^A %} %\author{^^A % Joseph Wright\thanks{E-mail: joseph.wright@morningstar2.co.uk}^^A %} %\date{Released \filedate} % %\maketitle % %\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 %} %\changes{v3.1}{2009/04/21}{ % Re-ordered code to reduce or remove dependency on other packages %} % %\begin{abstract} % The \pkg{achemso} bundle provides a \LaTeX\ class file and \BibTeX\ % style file in accordance with the requirements of the American % Chemical Society (\ACS). 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 \pkg{achemso}, and provides automatic moving of superscript % citations after punctuation. %\end{abstract} % %\begin{multicols}{2} % \tableofcontents %\end{multicols} % %\section{Introduction} % 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 \pkg{achemso}. % 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 \pkg{achemso} 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. The package contains % the parts of the bundle which are 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{Installation} % % The entire bundle is supplied with the TDS-ready ZIP file, % \file{achemso.tds.zip}. Simply unzip this into your local texmf % tree and run your hash program (\texttt{texhash} for \TeX{}Live or % \texttt{initextmf -u} for MiK\TeX). % % To extract the bundle of files from \file{achemso.dtx}, run % (pdf)\TeX\ on \file{achemso.dtx}. This will produce all of the package % files, and also \file{README.txt}. To extract the % files and build the documentation, run (pdf)\LaTeX\ on % \texttt{achemso.dtx}. The files can then be installed as above. % %\section{Requirements} % % The \pkg{achemso} class requires the following packages: %\begin{itemize} % \item \pkg{caption} % \item \pkg{float} % \item \pkg{natbib} % \item \pkg{setspace} % \item \pkg{xkeyval} %\end{itemize} % These are normally present in the current major \TeX\ distributions, % but are also available from \href{http://www.ctan.org}{The % Comprehensive TeX Archive Network}. % %\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{tab: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{tab: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. % %\DescribeOption{email} %\changes{v3.2b}{2009/05/05}{New \texttt{email} option} % It may be desirable to omit e-mail addresses from the front page of % a manuscript. The printing of e-mail addresses can be disabled using % the \opt{email} option, which takes Boolean values only. The default % is to print e-mail addresses. % % Other options are provided by the package, but when used with the % class these are silently ignored. % %\subsection{Manuscript meta-data} % %\DescribeMacro{\author} %\DescribeMacro{\affiliation} %\DescribeMacro{\alsoaffiliation} %\changes{v3.1}{2008/11/08}{Added \cs{alsoaffiliation} macro} %\DescribeMacro{\altaffiliation} %\DescribeMacro{\email} % Inspired by REV\TeX, the \pkg{achemso} 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{LaTeXdemo}[code only] % \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{LaTeXdemo} % %\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 \ % pkg{achemso} 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{Floats} %\DescribeEnv{scheme} %\DescribeEnv{chart} %\DescribeEnv{graph} % The class defines three new floating environments: \texttt{scheme}, % \texttt{chart} and \texttt{graph}. 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, |\ref{table:one}| % will yield ``Table~1'' without the user adding the ``Table'' part. % %\subsection{Section headers} % %\DescribeMacro{\SectionNumbersOff} %\DescribeMacro{\SectionNumbersOn} %\changes{v3.2}{2009/04/20}{ % New functions \cs{SectionsOff}, \cs{SectionsOn}, % \cs{SectionNumbersOff} and \cs{SectionNumbersOn} %} % Some journals have no section numbering by default. This can be % set up in the appropriate configuration file, but it may be that % individual users need to change the decision. The macros % \cs{SectionNumbersOff} and \cs{SectionNumbersOn} are therefore % available: these should be given in the preamble. % %\DescribeMacro{\SectionsOff} %\DescribeMacro{\SectionsOn} % More radically, the entire availability of sections can be turned on % and of. This is functionality is available to the user \emph{via} the % \cs{SectionsOn} and \cs{SectionsOff} macros, which again are % preamble-only. % %\DescribeMacro{\AbstractOff} %\DescribeMacro{\AbstractOn} %\changes{v3.2}{2009/04/20}{ % New functions \cs{AbstractOff} and \cs{AbstractOn} %} % Similar functions are available for the abstract: \cs{AbstractOff} and % \cs{AbstractOn}. % %\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 Communication. %\begin{LaTeXdemo}[code only] % \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{LaTeXdemo} % %\DescribeEnv{tocentry} %\changes{v3.2}{2009/04/21}{New \texttt{tocentry} section} % For generating an entry for the graphical table of content, required % by some journals, the environment \texttt{tocentry} is available. This % prints its content in an appropriately sized box on a separate page. % In contrast to the rest of the manuscript, this section is intended to % be ``print ready'' in appearance. %\begin{LaTeXdemo}[code only] % \begin{tocentry} % \includegraphics{toc-entry-graphic} % Some text to explain the graphic. % \end{tocentry} %\end{LaTeXdemo} % %\section{The package file} % The \pkg{achemso} package is independent of the classs file, and % contains parts of the bundle useful outside of submission to the % \ACS. % %\subsection{Package options} % % As with the class options, the package uses the key--value method % for option set up. These are used to control the output of citations % and bibliographic data. The same options are used when creating % journal configurations for the class: this is a task most users will % not need to undertake! % %\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{biochem} %\DescribeOption{biochemistry} % 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.} % %\subsection{Bibliography notes} % %\DescribeMacro{\bibnote} %\DescribeMacro{\bibnotemark} %\DescribeMacro{\bibnotetext} % \pkg{achemso} 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. In analogy to \cs{footnote}, the macros \cs{bibnotemark} and % \cs{bibnotetext} are available for dividing up the marker for a % note from the text. %\begin{LaTeXdemo} % Some text \bibnote{This note text will be in the bibliography}. %\end{LaTeXdemo} % % The functionality for bibnotes in \pkg{achemso} is based on that % in the \pkg{notes2bib} package. The \pkg{notes2bib} package can be % loaded with the \pkg{achemso} package, and no clash will occur. With % the class file, \pkg{notes2bib} will be ignored if requested, to % prevent issues on submission to the \ACS. % %\section{The \texorpdfstring{\BibTeX}{BibTeX} style files} % % \pkg{achemso} is supplied with two style files, \file{achemso.bst} and % \file{biochem.bst}. The direct use of these without the \pkg{achemso} % 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} package must be loaded by the \LaTeX\ file % concerned, if the \pkg{achemso} package is not in use. % % The style files are designed to use the \pkg{mciteplus} package if it % is available, but to work even if is not. When \pkg{mciteplus} is % present, it is possible to automatically produce references of the % form %\begin{quotation} % \noindent % (5) (a) Arduengo,~A.~J.,~III; Dias,~H. V.~R.; Harlow,~R.~L.; % Kline,~M. \emph{{J}.~{A}m.\ {C}hem.\ {S}oc.} \textbf{1992}, % \emph{114}, 5530--5534; (b) Appelhans,~L.~N.; Zuccaccia,~D.; % Kovacevic,~A.; Chianese,~A.~R.; Miecznikowski,~J.~R.; Macchioni,~A.; % Clot,~E.; Eisenstein,~O.; Crabtree,~R.~H. \emph{{J}.~{A}m.\ {C}hem. % {S}oc.} \textbf{2005}, \emph{127}, 16299--16311; (c) % Arduengo,~A.~J.,~III; Gamper,~S.~F.; Calabrese,~J.~C.; Davidson,~F. % \emph{J.~Am.\ Chem.\ Soc.} \textbf{1994}, \emph{116}, 4391--4394. %\end{quotation} % as demonstrated in the example document. When \pkg{mciteplus} is % not present, this functionality is not available but the style files % will work normally. % % 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. % %\section{The \pkg{natmove} package} % % The \pkg{natmove} package does only one job. It brings the ability to % move punctuation after citations, using code borrowed from the % \pkg{cite} package. Both the \pkg{achemso} class and package load % \pkg{natmove} automatically. %\begin{LaTeXdemo} % Some text \cite{Coghill2006} some more text.\\ % Some text ending a sentence \cite{Coghill2006}. %\end{LaTeXdemo} % This is deactivated for other citation types. %\begin{LaTeXdemo} % Some text \citeyear{Coghill2006}.\\ % Some text \citeauthor{Coghill2006}.\\ % Some text \citenum{Coghill2006}. %\end{LaTeXdemo} % The package does nothing if the \opt{super} option has not been % given to \pkg{natbib}. This means that the source can be written % without needing to decide where citations will to appear, with the % \opt{super} option for \pkg{natbib} controlling the result. % %\DescribeMacro{\natmovechars} % One user macro is provided: \cs{natmovechars}. This contains % the characters which are moved before superscript punctuation. % The default contents is |,;:.| and can be set using % \cs{renewcommand*}: %\begin{LaTeXdemo} % \renewcommand*{\natmovechars}{.} % Some text \cite{Coghill2006}, % more text \cite{Coghill2006}. %\end{LaTeXdemo} % %\StopEventually{^^A % \PrintChanges % \PrintIndex % \bibliography{achemso} %} % %\section{Implementation} % % A lot of the work done by the package is also needed by the class. % Loading the package and the class makes load-order awkward. Instead, % the two parts are done in one place. Sandwiching the common code are % two slices of dedicated material for the class and the package. Some % of this is needed ``early'', before the common material, whilst the % rest is ``late''. % %\subsection{Early class-only code} % % So that there is no confusion, the base class is loaded early. % \begin{macrocode} %<*class> \ProvidesClass{achemso} [2009/04/28 v3.2b Submission to ACS journals] \LoadClass[12pt,letter]{article} % \end{macrocode} % %\begin{macro}{\acs@warning} % The code for a warning is created so that it works for the package too. % \begin{macrocode} \newcommand*{\acs@warning}{\ClassWarning{achemso}} % % \end{macrocode} %\end{macro} % %\subsection{Early package-only code} % % The package and the class should not both be loaded, as the two use % the same internal macro names. On the other hand, if the class is % not in use a reminder is printed to use it if possible. % \begin{macrocode} %<*package> \ProvidesPackage{achemso} [2009/04/28 v3.2b Support for ACS journals] \@ifclassloaded{achemso}{% \PackageInfo{achemso}{% You have already loaded the `achemso' class:\MessageBreak loading the package will abort% }% \endinput }{% \PackageInfo{achemso}{% When writing a submission to an ACS journal, please\MessageBreak use the achemso document class% }% } % \end{macrocode} % %\begin{macro}{\acs@warning} % The code for a warning is created so that it works for the class too. % \begin{macrocode} \newcommand*{\acs@warning}{\PackageWarning{achemso}} % % \end{macrocode} %\end{macro} % %\subsection{Common code} % %\begin{macro}{\acs@ifundefined} % A non-expandable test for defined macros: does not add to the hash % table. % \begin{macrocode} %<*package|class> \newcommand*{\acs@ifundefined}[1]{% \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname #1\endcsname\relax \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } % \end{macrocode} %\end{macro} % % The first stage needed is to read the package options given. Although % \pkg{xkeyval} was perhaps not the best choice, changing this now would % be rather risky. % \begin{macrocode} \RequirePackage{xkeyval} % \end{macrocode} %\begin{macro}{\ifacs@biochem} %\begin{macro}{\ifacs@email} %\begin{macro}{\ifacs@super} %\begin{macro}{\ifacs@usetitle} % These are all very trivial definitions: to avoid issues with older % versions of \pkg{xkeyval} each definition is done separately. % \begin{macrocode} \define@boolkey{acs}[acs@]{biochem}[true]{} \define@boolkey{acs}[acs@]{email}[true]{} \define@boolkey{acs}[acs@]{super}[true]{} \define@boolkey{acs}[acs@]{usetitle}[true]{} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@journal} %\begin{macro}{\acs@manuscript} %\begin{macro}{\acs@maxauthors} % Trivial again. % \begin{macrocode} \newcommand*{\acs@journal}{jacsat} \newcommand*{\acs@manuscript}{article} \newcommand*{\acs@maxauthors}{15} \define@cmdkey{acs}[acs@]{journal}{} \define@cmdkey{acs}[acs@]{manuscript}{} \define@cmdkey{acs}[acs@]{maxauthors}{} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} % The \opt{biochemistry} option is an alias for \opt{biochem}. The % \opt{biblabel} option is a choice, which is implemented using a % csname search. The group here prevents hash table pollution, whilst % the \pkg{xkeyval} method is avoided as it is more complex than it is % worth! % \begin{macrocode} \define@key{acs}{biochemistry}{% \setkeys{acs}{biochem = #1}% } \define@key{acs}{biblabel}{% \acs@ifundefined{acs@biblabel@#1}{% \acs@warning{% Unknown value `#1' for\MessageBreak biblabel option% }% }{% \@nameuse{acs@biblabel@#1}% }% } % \end{macrocode} %\begin{macro}{\acs@biblabel@brackets} %\begin{macro}{\acs@biblabel@fullstop} %\begin{macro}{\acs@biblabel@period} %\begin{macro}{\acs@biblabel@plain} % The macros to implement the idea above for biblabels. % \begin{macrocode} \newcommand*{\acs@biblabel@brackets}{\def\@biblabel##1{(##1)}} \newcommand*{\acs@biblabel@fullstop}{\def\@biblabel##1{##1.}} \newcommand*{\acs@biblabel@period}{\def\@biblabel##1{##1.}} \newcommand*{\acs@biblabel@plain}{\def\@biblabel##1{##1}} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} % Set up some defaults. % \begin{macrocode} \setkeys{acs}{ super = true } % \end{macrocode} % Loading some other packages depends on the options chosen, so they % are processed now. % \begin{macrocode} \ProcessOptionsX* % \end{macrocode} % %\begin{macro}{\acs@niib@create} %\begin{macro}{bibnote} %\begin{macro}{\thebibnote} %\begin{macro}{\bibnote} %\begin{macro}{\bibnotemark} %\begin{macro}{\bibnotetext} %\begin{macro}{\printbibnotes} % To avoid needing to load the \pkg{notes2bib} package, especially as % the plan is to move that package to \LaTeX3 internal syntax, % \pkg{achemso} provides a minimal version here. The first step is to % create macros which will need a guard against \pkg{notes2bib} already % having been loaded. To allow the package and class to behave % differently these are actually applied later. % \begin{macrocode} \newcommand*{\acs@niib@create}{% \@namedef{ver@notes2bib.sty}{% 2009/04/20 v1.6a Integrating notes into the bibliography (achemso version) }% \newcounter{bibnote} \renewcommand*{\thebibnote}{% Note-\the\value{bibnote}% }% \DeclareRobustCommand*{\bibnote}[1][\thebibnote]{% \stepcounter{bibnote}% \def\acs@niib@after@text{\cite{##1}}% \acs@niib@text{##1}% }% \DeclareRobustCommand*{\bibnotemark}[1][\thebibnote]{% \stepcounter{bibnote}% \cite{##1}% }% \DeclareRobustCommand*{\bibnotetext}[1][\thebibnote]{% \let\acs@niib@after@text\relax \acs@niib@text{##1}% }% \newcommand*{\printbibnotes}{% \ifnum\the\value{bibnote}>\z@\relax \nocite{achemso-control}% \acs@bibliography{acs-\jobname}% \fi }% } % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@niib@after@text} % After the text. % \begin{macrocode} \newcommand*{\acs@niib@after@text}{} % \end{macrocode} %\end{macro} %\begin{macro}{\acs@niib@text} % The \cs{acs@niib@text} macro is the outer part of the writing system. % It does not absorb the text of note, as without \eTeX\ this is bad % news. The same file is used for notes and the control entry for % the bibliography style. % \begin{macrocode} \newcommand*{\acs@niib@text}{% \@bsphack \if@filesw \expandafter\acs@niib@write \else \expandafter\acs@niib@no@write \fi } % \end{macrocode} %\end{macro} %\begin{macro}{\acs@niib@write} %\begin{macro}{\acs@niib@write@aux@i} %\begin{macro}{\acs@niib@write@aux@ii} % Writing verbatim without \eTeX. % \begin{macrocode} \newcommand*{\acs@niib@write}[1]{% \begingroup \let\do\@makeother \dospecials \catcode`\{ 1\relax \catcode`\} 2\relax \acs@niib@write@aux@i{#1}% } \newcommand*{\acs@niib@write@aux@i}[1]{% \long\def\@tempa##1{% \def\@tempa{##1}% \@onelevel@sanitize\@tempa \expandafter\endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempa}% \acs@niib@write@aux@ii{#1}% }% \catcode`\^^M 10\relax \@tempa } \newcommand*{\acs@niib@write@aux@ii}[1]{% \immediate\write\acs@bib@file{% @Misc\string{#1,^^J% \space\space note = \string{\@tempa\string},^^J% \string}^^J% }% \@esphack \acs@niib@after@text } % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@niib@no@write} % If no files are to be written, a bit of tidying up. % \begin{macrocode} \newcommand{\acs@niib@no@write}[2]{% \@esphack \acs@niib@after@text } % \end{macrocode} %\end{macro} % %\begin{macro}{\nmv@natbib@detect} %\begin{macro}{\acs@nmv@activate} %\begin{macro}{\acs@autonote} % The functionality of \pkg{notes2bib} is combined with the standard % \cs{cite} macro, to give automatic note-like data in the bibliography. % \begin{macrocode} \AtBeginDocument{ \renewcommand*{\nmv@natbib@detect}{% \ifNAT@super \expandafter\acs@nmv@activate \else \expandafter\acs@autonote \fi } } \newcommand*{\acs@nmv@activate}{% \let\nmv@citex@nat\@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}% }% }% } \newcommand*{\acs@autonote}{% \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} % %\begin{macro}{\acs@bibstyle} % The next step is to sort out bibliography formatting. With both the % package and the class, the bibliography style is determined without % user intervention. The style is stored as it may need to be % altered later. % \begin{macrocode} \newcommand*{\acs@bibstyle}{achemso} \bibliographystyle{achemso} \ifacs@biochem \renewcommand*{\acs@bibstyle}{biochem} \bibliographystyle{biochem} \fi % \end{macrocode} %\end{macro} %\begin{macro}{\acs@bibliographystyle} %\begin{macro}{\bibliographystyle} % The original \cs{bibliographystyle} macro is now disabled: the % underlying command is repeated otherwise problems cop up with % \pkg{chapterbib}. % \begin{macrocode} \newcommand*{\acs@bibliographystyle}{} \let\acs@bibliographystyle\bibliographystyle \renewcommand*{\bibliographystyle}[1]{% \acs@warning{\string\bibliographystyle\space ignored}% \expandafter\acs@bibliographystyle\expandafter{\acs@bibstyle}% } % \end{macrocode} %\end{macro} %\end{macro} % %\begin{macro}{\acs@bib@file} %\begin{macro}{\acs@bib@message} %\begin{macro}{\acs@bib@name} % Some information or creating the control file for \BibTeX\ is set up. % \begin{macrocode} \newwrite\acs@bib@file \newcommand*{\acs@bib@message}{% This is an auxiliary file used by the `achemso' bundle.^^J% This file may safely be deleted. It will be recreated as required.^^J } \newcommand*{\acs@bib@name}{acs-\jobname.bib} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@bib@write} %\changes{v3.2b}{2009/05/05}{Force \cs{AtBeginDocument} so first citation % is for control} %\begin{macro}{\acs@bib@write@aux} % The control information for \BibTeX\ needs to be written to a special % file. The main writing macro is quite simple. Actually writing the % information is left to the code for \cs{bibliography}, so that this % only happens if needed. % \begin{macrocode} \newcommand*{\acs@bib@write}{% \if@filesw \expandafter\acs@bib@write@aux \fi } \AtBeginDocument{\acs@bib@write} \newcommand*{\acs@bib@write@aux}{% \immediate\openout\acs@bib@file\acs@bib@name\relax \immediate\write\acs@bib@file{\acs@bib@message}% \edef\@tempa##1##2{% \space\space##1\space = \space"##2",^^J% }% \immediate\write\acs@bib@file{% @Control\string{% achemso-control,^^J% \@tempa{ctrl-use-title}{% \ifacs@usetitle yes\else no\fi }% \@tempa{ctrl-etal-number}{\acs@maxauthors}% \string}^^J% }% \immediate\write\@auxout{% \string\citation\string{achemso-control\string}% }% \AtEndDocument{% \immediate\closeout\acs@bib@file\relax }% } % \end{macrocode} %\end{macro} %\end{macro} % % The \pkg{mciteplus} package allows the construction of lists of % references with sub-letters. However, it might not be available, and % so it is only loaded if available: the \file{.bst} files should work % either way. % \begin{macrocode} \IfFileExists{mciteplus.sty}{% \RequirePackage{mciteplus} }{} % \end{macrocode} % %\begin{macro}{\acs@bibliography} %\begin{macro}{\bibliography} % The \cs{bibliography} macro is now patched so that everything works % correctly. % \begin{macrocode} \AtBeginDocument{% \let\acs@bibliography\bibliography \renewcommand*{\bibliography}[1]{% \acs@bibliography{acs-\jobname,#1}% }% } % % \end{macrocode} %\end{macro} %\end{macro} % %\subsection{Late class-only code} % % Most of the power of the class is now created. First, a few options % are reset so that any given by the user are effectively ignored. % \begin{macrocode} %<*class> \setkeys{acs}{ biblabel = brackets, biochem = false, maxauthors = 15, super = true, usetitle = false } % \end{macrocode} % When using the class, \pkg{notes2bib} is always emulated. Other % standard support packages can now be loaded. % \begin{macrocode} \acs@niib@create \RequirePackage[T1]{fontenc} \RequirePackage[margin=2.54cm]{geometry} \RequirePackage[scaled=0.90]{helvet} \RequirePackage{ caption, courier, float, graphicx, mathptmx, setspace, url, varioref } \AtBeginDocument{\doublespacing} % \end{macrocode} % %\begin{macro}{\title} %\changes{v3.2}{2009/04/19}{ % Short title no longer used although optional argument still % accepted: removed internal \cs{@shorttitle} macro %} %\begin{macro}{\@title} %\begin{macro}{\acs@title} % For the meta-data, the REV\TeX\ bundle provides a good model for % the commands to give the author. \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}% } \@onlypreamble\title % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@author@cnt} %\begin{macro}{\acs@affil@cnt} %\begin{macro}{\acs@affil@alt@cnt} % \pkg{achemso} tracks the number authors, affiliations and alternative % affiliations. % \begin{macrocode} \newcount\acs@author@cnt \newcount\acs@affil@cnt \newcount\acs@affil@alt@cnt % \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@author@cnt\@ne\relax \expandafter\gdef\csname @author@\@roman\acs@author@cnt\endcsname{#1}% \begingroup \advance\acs@affil@cnt\@ne \expandafter\xdef\csname @author@affil@\@roman \acs@author@cnt\endcsname {\the\acs@affil@cnt}% \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}{% \acs@warning{% \string\and\space not used by the achemso class: please see the\MessageBreak package documentation for details% }% } \renewcommand*{\thanks}{% \acs@warning{% \string\thanks\space not used by the achemso class: please see the\MessageBreak the package 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@author@cnt>\z@\relax \acs@affil@ifdup{#2}{% \acs@affil@swap{#2}% }{% \global\advance\acs@affil@cnt\@ne\relax \expandafter\gdef\csname @address@\@roman\acs@affil@cnt\endcsname {#2}% \ifx\relax#1\relax \expandafter\gdef\csname @affil@\@roman\acs@affil@cnt\endcsname {#2}% \else \expandafter\gdef\csname @affil@\@roman\acs@affil@cnt\endcsname {#1}% \fi }% \else \acs@warning{Affiliation with no author}% \fi } \@onlypreamble\affiliation % \end{macrocode} %\end{macro} %\begin{macro}{\acs@affil@ifdup} %\changes{v3.2a}{2009/04/28}{Fixed mistake in definition for \cs{@tempb} % to ensure check actually works.} %\begin{macro}{\acs@affil@ifdup@aux} % A short test for two addresses being identical. % \begin{macrocode} \newcommand*{\acs@affil@ifdup}[1]{% \begingroup \def\@tempa{#1}% \@tempswafalse \@tempcnta\z@\relax \acs@affil@ifdup@aux \if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi \endgroup } \newcommand*{\acs@affil@ifdup@aux}{% \advance\@tempcnta\@ne\relax \expandafter\expandafter\expandafter\def\expandafter\expandafter \expandafter\@tempb\expandafter\expandafter\expandafter {\csname @address@\@roman\@tempcnta\endcsname}% \ifx\@tempa\@tempb \expandafter\@tempswatrue \else \ifnum\@tempcnta<\acs@affil@cnt\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\@tempa{#1}% \@tempcnta\z@\relax \@tempcntb\z@\relax \acs@affil@ifdup@aux \advance\acs@affil@cnt\@ne\relax \acs@affil@swap@aux \endgroup } \newcommand*{\acs@affil@swap@aux}{% \advance\@tempcntb\@ne\relax \expandafter\ifnum\csname @author@affil@\@roman\@tempcntb\endcsname = \acs@affil@cnt\relax \expandafter\xdef\csname @author@affil@\@roman\@tempcntb\endcsname{% \the\@tempcnta }% \fi \ifnum\@tempcntb<\acs@author@cnt\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@author@cnt>\z@\relax \acs@affil@ifdup{#2}{% \acs@alsoaffil@find{#2}% }{% \global\advance\acs@affil@cnt\@ne\relax \@tempcnta\acs@affil@cnt\relax \expandafter\gdef\csname @address@\@roman\acs@affil@cnt\endcsname {#2}% \ifx\relax#1\relax \expandafter\gdef\csname @affil@\@roman\acs@affil@cnt\endcsname {#2}% \else \expandafter\gdef\csname @affil@\@roman\acs@affil@cnt\endcsname {#1}% \fi }% \@ifundefined{@author@alsoaffil@\@roman\acs@author@cnt}{% \expandafter\xdef\csname @author@alsoaffil@\@roman\acs@author@cnt \endcsname{\the\@tempcnta}% }{% \expandafter\xdef\csname @author@alsoaffil@\@roman\acs@author@cnt \endcsname{% \csname @author@alsoaffil@\@roman\acs@author@cnt\endcsname ,\the\@tempcnta }% }% \else \acs@warning{Affiliation with no author}% \fi } \newcommand*{\acs@alsoaffil@find}[1]{% \begingroup \def\@tempa{#1}% \@tempcnta\z@\relax \@tempcntb\z@\relax \acs@affil@ifdup@aux \expandafter\endgroup \expandafter\@tempcnta\the\@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@author@cnt>\z@\relax \global\advance\acs@affil@alt@cnt\@ne\relax \expandafter\gdef\csname @altaffil@\@roman\acs@author@cnt\endcsname {#1}% \expandafter\xdef\csname @author@altaffil@\@roman\acs@author@cnt \endcsname{\the\acs@affil@alt@cnt}% \else \acs@warning{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@author@cnt>\z@\relax \expandafter\gdef\csname @email@\@roman\acs@author@cnt\endcsname {#1}% \else \acs@warning{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. Some classes need a page break after the % title: a hook is provided for this. % \begin{macrocode} \renewcommand*{\@maketitle}{% \ifnum\acs@author@cnt<\z@\relax \acs@warning{No authors defined: At least one author is required}% \fi \newpage \null \vskip 2em\relax \begin{center} {% \LARGE\bfseries\sffamily \def\@tempa{suppinfo}% \ifx\acs@manuscript\@tempa Supporting information for: \fi \@title \par }% \vskip 1.5em\relax {% \large\sffamily\frenchspacing\acs@author@list }% \vskip 1em\relax {% \itshape\acs@address@list }% \vskip 1em\relax {% \ifacs@email \expandafter\acs@title@email \fi }% \end{center} \par \vskip 1.5em\relax } % \end{macrocode} %\end{macro} %\begin{macro}{\acs@title@email} % A short spin-out. % \begin{macrocode} \newcommand*{\acs@title@email}{% \sffamily E-mail: \acs@email@list } % \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@affil@cnt>\@ne\relax \expandafter\acs@affil@list \else \ifnum\acs@affil@alt@cnt>\z@\relax \expandafter\expandafter\expandafter\acs@affil@list \fi \fi } % \end{macrocode} %\end{macro} %\begin{macro}{\acs@author@list} %\changes{v3.0a}{2008/08/21}{Skips footnotes for a single institution} %\changes{v3.2}{2009/04/20}{Logic made clearer with more sub-macros} % 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@author@list}{% \@tempcnta\z@\relax \@tempcntb\acs@affil@cnt\relax \ifnum\acs@author@cnt=\z@\relax\else \expandafter\acs@author@list@main \fi } % \end{macrocode} %\end{macro} %\begin{macro}{\acs@author@footnotes} %\begin{macro}{\acs@author@list@main} % The main control macro for producing the author list iterates over % each author on the list. The result is stored as % \cs{acs@author@listing}. % \begin{macrocode} \newcommand*{\acs@author@footnotes}{} \newcommand*{\acs@author@list@main}{% \advance\@tempcnta\@ne\relax \def\acs@author@footnotes{}% \acs@author@list@and \space \@nameuse{@author@\@roman\@tempcnta}% \acs@author@list@comma \acs@author@star \acs@author@affil \acs@author@affil@also \acs@author@affil@alt \ifx\@empty\acs@author@footnotes\else \textsuperscript{\acs@author@footnotes}% \fi \ifnum\@tempcnta<\acs@author@cnt\relax \expandafter\acs@author@list@main \fi } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@author@list@and} %\begin{macro}{\acs@author@list@comma} % Simple checks to add an ``and'' and a comma. % \begin{macrocode} \newcommand*{\acs@author@list@and}{% \ifnum\acs@author@cnt=\@ne\relax\else \ifnum\@tempcnta=\acs@author@cnt\relax \space and% \fi \fi } \newcommand*{\acs@author@list@comma}{% \ifnum\@tempcnta<\acs@author@cnt\relax ,% \fi } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@author@star} %\begin{macro}{\acs@author@star@aux} % A check for an e-mail for an author: if so, add a star. % \begin{macrocode} \newcommand*{\acs@author@star}{% \acs@ifundefined{@email@\@roman\@tempcnta}{}{% \acs@author@star@aux }% } \newcommand*{\acs@author@star@aux}{% \protected@edef\acs@author@footnotes{% \acs@author@fnsymbol{\z@}% \ifnum\acs@affil@cnt>\@ne\relax ,% \else \ifnum\acs@affil@alt@cnt>\z@\relax ,% \fi \fi }% } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@author@affil} %\begin{macro}{\acs@author@affil@aux} % The main affiliation of the author is checked for, and assuming one % is found the appropriate symbol is added to the list. % \begin{macrocode} \newcommand*{\acs@author@affil}{% \acs@ifundefined{% @affil@\@roman\csname @author@affil@\@roman\@tempcnta\endcsname }{% \acs@warning{% No affiliation given for author\MessageBreak \@nameuse{@author@\@roman\@tempcnta}% }% }{% \acs@author@affil@aux }% } \newcommand*{\acs@author@affil@aux}{% \ifnum\acs@affil@cnt>\@ne\relax \protected@edef\acs@author@footnotes{% \acs@author@footnotes \acs@author@fnsymbol{% \@nameuse{@author@affil@\@roman\@tempcnta}% }% }% \else \ifnum\acs@affil@alt@cnt>\z@\relax \protected@edef\acs@author@fnsymbol{% \acs@author@footnotes \acs@author@fnsymbol{\@ne}% }% \fi \fi } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@author@affil@also} %\begin{macro}{\acs@author@affil@also@aux} % The ``also'' affiliations are generated by a loop as there may be more % than one. % \begin{macrocode} \newcommand*{\acs@author@affil@also}{% \acs@ifundefined{@author@alsoaffil@\@roman\@tempcnta}{}{% \acs@author@affil@also@aux }% } \newcommand*{\acs@author@affil@also@aux}{% \expandafter\@for\expandafter\@tempa\expandafter:\expandafter =\csname @author@alsoaffil@\@roman\@tempcnta\endcsname\do{% \protected@edef\acs@author@footnotes{% \acs@author@footnotes ,% \acs@author@fnsymbol{\@tempa}% }% }% } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@author@affil@alt} %\begin{macro}{\acs@author@affil@alt@aux} % Alternative affiliations use the secondary counter \cs{@tempcntb}, % which starts out at the end of the main list. % \begin{macrocode} \newcommand*{\acs@author@affil@alt}{% \acs@ifundefined{@author@altaffil@\@roman\@tempcnta}{}{% \acs@author@affil@alt@aux }% } \newcommand*{\acs@author@affil@alt@aux}{% \advance\@tempcntb\@ne\relax \protected@edef\acs@author@footnotes{% \acs@author@footnotes ,% \acs@author@fnsymbol{\@tempcntb}% }% } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@author@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@author@fnsymbol}[1]{% \ensuremath{% \ifcase #1 *\or \dagger\or \ddagger\or \P\or \S\or \|\or \bot\or \#\or @\or \triangle\or \nabla\else #1% \fi }% } % \end{macrocode} %\end{macro} %\begin{macro}{\acs@address@list} %\begin{macro}{\acs@address@list@aux} % The main address block is rather less complex than the author % printing: one print job per address. % \begin{macrocode} \newcommand*{\acs@address@list}{% \@tempcnta\z@\relax \ifnum\acs@affil@cnt>\z@\relax \acs@address@list@aux \else \acs@warning{% No affiliations: at least one affiliation is needed% }% \fi } \newcommand*{\acs@address@list@aux}{% \advance\@tempcnta\@ne\relax \ifnum\acs@affil@cnt>\@ne\relax \ifnum\@tempcnta=\acs@affil@cnt\relax and \fi \fi \@nameuse{@address@\@roman\@tempcnta}% \ifnum\@tempcnta<\acs@affil@cnt\relax , \expandafter\acs@address@list@aux \fi } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@fnsymbol@org} %\changes{v3.0a}{2008/08/21}{ % Fixed bugs in printing affiliations correctly %} %\begin{macro}{\acs@affil@list} %\begin{macro}{\acs@affil@list@aux} % Footnotes are done in two stages. First the main affiliation is % handled, then the possible alternative. There is a need to check for % the possibility that there is only one main affiliation but one or % more alternative ones. % \begin{macrocode} \newcommand*{\acs@fnsymbol@org}{} \newcommand*{\acs@affil@list}{% \let\acs@fnsymbol@org\@fnsymbol \let\@fnsymbol\acs@author@fnsymbol \@tempcnta\z@\relax \@tempcntb\z@\relax \ifnum\acs@affil@cnt>\@ne\relax \expandafter\acs@affil@list@aux \else \ifnum\acs@affil@alt@cnt>\z@\relax \footnotetext[\@ne]{\@affil@i}% \@tempcnta\@ne\relax \fi \fi \ifnum\acs@affil@alt@cnt>\z@\relax \expandafter\acs@affil@alt@list \fi \let\@fnsymbol\acs@fnsymbol@org } \newcommand*{\acs@affil@list@aux}{% \advance\@tempcnta\@ne\relax \footnotetext[\@tempcnta]{\@nameuse{@affil@\@roman\@tempcnta}}% \ifnum\@tempcnta<\acs@affil@cnt\relax \expandafter\acs@affil@list@aux \fi } % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@affil@alt@list} %\begin{macro}{\acs@affil@alt@lista@aux} % The secondary loop for alternative affiliations is similar. % \begin{macrocode} \newcommand*{\acs@affil@alt@list}{% \advance\@tempcntb\@ne\relax \acs@ifundefined{@altaffil@\@roman\@tempcntb}{}{% \acs@altaffil@foot@aux } \ifnum\@tempcntb<\acs@author@cnt\relax \expandafter\acs@affil@alt@list \fi } \newcommand*{\acs@altaffil@foot@aux}{% \advance\@tempcnta\@ne\relax \footnotetext[\@tempcnta]{\@nameuse{@altaffil@\@roman\@tempcntb}}% } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@email@list} %\changes{v3.0a}{2008/08/21}{Fixed error if only one address is given} %\begin{macro}{\acs@email@list@aux} % 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{@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@email@list}{% \begingroup \def\UrlFont{\sf}% \@tempcnta\z@\relax \@tempcntb\z@\relax \acs@email@list@aux \ifnum\@tempcntb=\z@\relax \acs@warning{% No e-mail given:\MessageBreak at lest one author must have a contact e-mail% }% \fi \endgroup } \newcommand*{\acs@email@list@aux}{% \advance\@tempcnta\@ne\relax \ifnum\@tempcnta>\acs@author@cnt\relax\else \acs@ifundefined{@email@\@roman\@tempcnta}{}{% \advance\@tempcntb\@ne\relax \ifnum\@tempcntb>\@ne\relax ; \fi \expandafter\expandafter\expandafter\url\expandafter \expandafter\expandafter{% \csname @email@\@roman\@tempcnta\endcsname }% }% \expandafter\acs@email@list@aux \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} % %\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} % %\begin{macro}{\acs@section} %\begin{macro}{\acs@subsection} %\begin{macro}{\acs@subsubsection} %\begin{macro}{\acs@startsection} % Both the numbering and existence of section headers may need to be % altered. Some generic functions are therefore provided to deal with % this cleanly. First, some original definitions are saved. % \begin{macrocode} \newcommand*{\acs@section}{} \let\acs@section\section \newcommand*{\acs@subsection}{} \let\acs@subsection\subsection \newcommand*{\acs@subsubsection}{} \let\acs@subsubsection\subsubsection \newcommand*{\acs@startsection}{} \let\acs@startsection\@startsection % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@startsection@alt} % An alternative version of \cs{@startsection} which never adds numbers. % \begin{macrocode} \newcommand*{\acs@startsection@alt}[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 \@ifstar{% \@ssect{#3}{#4}{#5}{#6}% }{% \@ssect{#3}{#4}{#5}{#6}% }% } % \end{macrocode} %\end{macro} %\begin{macro}{\acs@sections@none} %\begin{macro}{\acs@sections@none@aux} % When removing sections entirely, a gobble macro is needed. % \begin{macrocode} \newcommand*{\acs@sections@none}{% \@ifstar{% \acs@sections@none@aux }{% \acs@sections@none@aux }% } \newcommand*{\acs@sections@none@aux}[2][]{% \acs@warning{% (Sub)section `#2' ignored% }% } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\SectionNumbersOff} %\begin{macro}{\SectionNumbersOn} % To macros to add or remove the section numbers. The standard setting % for the class has them on, but some configurations will turn them % off. The names of these functions are both in design space so that % users can change the decision easily. % \begin{macrocode} \newcommand*{\SectionNumbersOff}{% \let\@startsection\acs@startsection@alt } \@onlypreamble\SectionNumbersOff \newcommand*{\SectionNumbersOn}{% \let\@startsection\acs@startsection } \@onlypreamble\SectionNumbersOn % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\SectionsOff} %\begin{macro}{\SectionsOn} % Quite similar for entire sections. % \begin{macrocode} \newcommand*{\SectionsOff}{% \let\section\acs@sections@none \let\subsection\acs@sections@none \let\subsubsection\acs@sections@none } \@onlypreamble\SectionsOff \newcommand*{\SectionsOn}{% \let\section\acs@section \let\subsection\acs@subsection \let\subsubsection\acs@subsubsection } \@onlypreamble\SectionsOn % \end{macrocode} %\end{macro} %\end{macro} %\begin{environment}{acknowledgement} %\begin{environment}{suppinfo} % Simple named sections. % \begin{macrocode} \newenvironment{acknowledgement}{% \acs@subsection*{\acknowledgementname}% }{} \newenvironment{suppinfo}{% \acs@subsection*{\suppinfoname}% }{} % \end{macrocode} %\end{environment} %\end{environment} %\begin{macro}{\acknowledgementname} %\begin{macro}{\bibsection} %\changes{v3.2b}{2009/05/05}{Move redefinition to \cs{AtEndOfClass}} %\begin{macro}{\suppinfoname} % A few macros need to get around the changes. % \begin{macrocode} \newcommand*{\acknowledgementname}{Acknowledgement} \AtEndOfClass{% \renewcommand*{\bibsection}{% \acs@subsection*{\refname}% }% } \newcommand*{\suppinfoname}{Supporting Information Available} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} % %\begin{macro}{\acs@abstract} %\begin{macro}{\acs@endabstract} %\begin{macro}{\acs@abstract@start} %\begin{macro}{\acs@abstract@end} %\begin{macro}{\acs@abstract@iffalse} % Removing the abstract, if necessary, is done using a trick from the % \pkg{comment} package. However, it code is copied here to keep % requirements down. % \begin{macrocode} \newcommand*{\acs@abstract}{} \let\acs@abstract\abstract \newcommand*{\acs@endabstract}{} \let\acs@endabstract\endabstract \begingroup \catcode`{ \active \catcode`} 12\relax \catcode`( 1\relax \catcode`) 2\relax \gdef\acs@abstract@start(% \acs@warning(% Abstract not allowed for this\MessageBreak manuscript type )% \@bsphack \catcode`{ \active \catcode`} 12\relax \let\end\fi \let{\acs@abstract@end% } \iffalse )%{ \gdef\acs@abstract@end#1}(% \def\@tempa(#1)% \ifx\@tempa\@currenvir \@Esphack\endgroup \if@ignore \global\@ignorefalse \ignorespaces \fi \else \expandafter\acs@abstract@iffalse \fi ) \endgroup \newcommand*{\acs@iffalse}{\iffalse} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\AbstractOff} %\begin{macro}{\AbstractOn} % A very similar pattern to before. % \begin{macrocode} \newcommand*{\AbstractOff}{% \let\abstract\acs@abstract@start \let\endabstract\acs@abstract@end } \@onlypreamble\AbstractOff \newcommand*{\AbstractOn}{% \let\abstract\acs@abstract \let\endabstract\acs@endabstract } \@onlypreamble\AbstractOn % \end{macrocode} %\end{macro} %\end{macro} % %\begin{macro}{\acs@toc@toks} %\begin{macro}{\acs@toc@content} %\begin{macro}{\acs@toc@content} % The content of the graphic TOC entry is processed using a method from % \pkg{amsmath} \emph{via} \pkg{environ}. The entire environment is % gathered for typesetting in a box. First, some storage is needed. % \begin{macrocode} \newtoks\acs@toc@toks \newtoks\acs@toc@empty@toks \newcommand*{\acs@toc@begins}{} \newcommand*{\acs@toc@content}{} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@toc@collect} %\begin{macro}{\acs@toc@collect@aux} %\begin{macro}{\acs@toc@collect@begins} %\begin{macro}{\acs@toc@collect@body} % This is a \cs{long} version of \cs{collect@body}. % \begin{macrocode} \newcommand{\acs@toc@collect}[1]{% \acs@toc@toks{% \expandafter#1\expandafter{\the\acs@toc@toks}% }% \edef\acs@toc@content{% \the\acs@toc@toks \noexpand\end{\@currenvir}% }% \acs@toc@toks\acs@toc@empty@toks \def\acs@toc@begins{b}% \begingroup \expandafter\let\csname\@currenvir\endcsname\acs@toc@collect@aux \edef\acs@toc@content{% \expandafter\noexpand\csname\@currenvir\endcsname }% \acs@toc@content } \newcommand*{\acs@toc@collect@aux}{} \long\def\acs@toc@collect@aux#1\end#2{% \edef\acs@toc@begins{% \acs@toc@collect@begins#1\begin\end \expandafter\@gobble\acs@toc@begins }% \ifx\@empty\acs@toc@begins \endgroup \@checkend{#2}% \acs@toc@collect@body{#1}% \else \acs@toc@collect@body{#1\end{#2}}% \fi \acs@toc@content } \newcommand*{\acs@toc@collect@begins}{} \long\def\acs@toc@collect@begins#1\begin#2{% \ifx\end#2\else b\expandafter\acs@toc@collect@begins \fi } \newcommand{\acs@toc@collect@body}[1]{% \global\acs@toc@toks\expandafter{\the\acs@toc@toks#1}% } % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\acs@toc@print} % A simple macro to print the TOC contents. % \begin{macrocode} \newcommand{\acs@toc@print}[1]{% \begin{center} \fbox{% \begin{minipage}{9cm} \vbox to 3.5cm{#1}% \end{minipage}% }% \end{center}% } % \end{macrocode} %\end{macro} %\begin{environment}{tocentry} % Actually creating the entry is pretty easy. % \begin{macrocode} \newenvironment{tocentry}{% \if@twocolumn \@restonecoltrue\onecolumn \else \@restonecolfalse\newpage \fi \acs@section*{\tocentryname}% \tocsize \sffamily \singlespacing \acs@toc@collect\acs@toc@print }{% \if@restonecol \twocolumn \else \newpage \fi } % \end{macrocode} %\end{environment} %\begin{macro}{\tocentryname} % A simple name macro. % \begin{macrocode} \newcommand*{\tocentryname}{Graphical TOC Entry} % \end{macrocode} %\end{macro} %\begin{macro}{\tocsize} % The font size for printing the TOC entry. % \begin{macrocode} \newcommand*{\tocsize}{% \@setfontsize\tocsize\@viiipt\@ixpt } % \end{macrocode} %\end{macro} % %\begin{macro}{\acs@type@list} %\begin{macro}{\acs@type@default} %\begin{macro}{\acs@type@check} % Different journals allow different types of article. A list is set % up here: different journals can then alter it. A check function % is also provided along with a default. % \begin{macrocode} \newcommand*{\acs@type@list}{article,communication,suppinfo} \newcommand*{\acs@type@default}{article} \newcommand*{\acs@type@check}{% \@tempswafalse \@for\@tempa:=\acs@type@list\do{% \ifx\@tempa\acs@manuscript \expandafter\@tempswatrue \fi }% \if@tempswa\else \acs@warning{% Invalid manuscript type \acs@manuscript:\MessageBreak changed to default type \acs@type@default }% \let\acs@manuscript\acs@type@default \fi } % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} % % Although \pkg{achemso} 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} % %\changes{v3.2b}{2009/05/05}{Some back-compatibility functions added} % A few bits for older versions. % \begin{macrocode} \newcommand*{\acs@setkeys}{\setkeys{acs}} \let\acs@killabstract\AbstractOff \let\acs@killsecs\SectionsOff \newcommand*{\acs@validtype}[2][article]{% \renewcommand*{\acs@type@default}{#1}% \renewcommand*{\acs@type@list}{#2}% } % \end{macrocode} % % With all of the standard settings done, the journal configuration can % be loaded. % \begin{macrocode} \InputIfFileExists{\acs@journal.cfg}{}{% \acs@warning{% Unknown journal `\acs@journal':\MessageBreak using default configuration JACSAT% }% \input{jacsat.cfg}% } % \end{macrocode} % %\begin{macro}{\thepage} % Some changes that can always be applied if the manuscript type is % appropriate: this saves some repetition in the configuration files. % \begin{macrocode} \acs@type@check \def\@tempa{note} \ifx\acs@manuscript\@tempa \SectionsOff \fi \def\@tempa{review} \ifx\acs@manuscript\@tempa \SectionsOn \SectionNumbersOn \fi \def\@tempa{suppinfo} \ifx\acs@manuscript\@tempa \setkeys{acs}{maxauthors = 0} \renewcommand*{\thepage}{S\arabic{page}} \fi % % \end{macrocode} %\end{macro} % %\subsection{Late shared code} % %\changes{v3.2b}{2009/05/05}{Moved loading of \textsf{natbib} to end of % class} %\begin{macro}{\citenumfont} % Changes to citations can now be made. The citation styles supplied % here require \pkg{natbib}, which is loaded with the appropriate % options. This part applies to the package as well as the class: it is % here so that the load order is correct. % \begin{macrocode} %<*class|package> \ifacs@super \RequirePackage[sort&compress,numbers,super]{natbib} \else \RequirePackage[sort&compress,numbers,round]{natbib} \def\citenumfont{\textit} \fi \RequirePackage{natmove} % % \end{macrocode} %\end{macro} % %\subsection{Late package-only code} % % The \pkg{notes2bib} code may or may not be activated. % \begin{macrocode} %<*package> \AtBeginDocument{% \@ifpackageloaded{notes2bib}{}{% \acs@niib@create }% } % % \end{macrocode} % %\subsection{Moving citations with \pkg{natbib}} % % The code for moving citations is created as a separate package, as % the code needed is the same in both cases. % \begin{macrocode} %<*natmove> \ProvidesPackage{natmove} [2009/04/20 v1.1 Automatic citation moving with natbib] \RequirePackage{natbib} % \end{macrocode} % %\begin{macro}{\nmv@ifmtarg} %\begin{macro}{\nmv@xifmtarg} % To keep down dependence on other packages, the very short code block % from \pkg{ifmtarg} is copied here with an internal name. % \begin{macrocode} \newcommand*{\nmv@ifmtarg}{} \newcommand*{\nmv@xifmtarg}{} \begingroup \catcode`\Q 3\relax \long\gdef\nmv@ifmtarg#1{% \nmv@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil } \long\gdef\nmv@xifmtarg#1#2Q#3#4#5\@nil{#4} \endgroup % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\ifnmv@cite} % A flag is need to watch whether \cs{cite} or another macro is in use. % \begin{macrocode} \newif\ifnmv@cite % \end{macrocode} %\end{macro} %\begin{macro}{\nmv@citex} % Using the flag, either the new internal macro, or the \pkg{natbib} % original, can be called. % \begin{macrocode} \newcommand*{\nmv@citex}{% \ifnmv@cite \expandafter\nmv@citex@moving \else \expandafter\nmv@citex@nat \fi } % \end{macrocode} %\end{macro} %\begin{macro}{\nmv@after} % Later, the argument for \cs{cite} will need to be saved. % \begin{macrocode} \newcommand*{\nmv@after}{} % \end{macrocode} %\end{macro} %\begin{macro}{\nmv@citex@moving} % The new version of \cs{@citex} is needed that looks ahead of the % citation using \cs{futurelet}. There are three arguments to % \cs{@citex} when using \pkg{natbib}. Other than that, the trick % used here is similar to that in \pkg{cite}. % \begin{macrocode} \newcommand*{\nmv@citex@moving}{} \def\nmv@citex@moving[#1][#2]#3{% \leavevmode \skip@\lastskip \unskip \begingroup \def\nmv@after{\nmv@citex@nat[#1][#2]{#3}}% \global\nmv@citefalse \nmv@citex@get@next\relax } % \end{macrocode} %\end{macro} %\begin{macro}{\nmv@citex@end} % To get things right at the end. % \begin{macrocode} \newcommand*{\nmv@citex@end}{% \nmv@after \endgroup } % \end{macrocode} %\end{macro} %\begin{macro}{\nmv@citex@get@next} %\begin{macro}{\nmv@citex@next} % The next token on the input stack is saved into % \cs{nmv@citex@next}, after gobbling up one token. % \begin{macrocode} \newcommand*{\nmv@citex@get@next}[1]{% \futurelet\nmv@citex@next\nmv@citex@punct } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\nmv@citex@punct} %\begin{macro}{\nmv@citex@loop} % The working macro for moving the punctuation. This is very much % like \cs{@citey} in the \pkg{cite} package. The initial assumption % is that the loop will terminate, and so the recursion call will % simply do the finalisation. % \begin{macrocode} \newcommand*{\nmv@citex@punct}{% \let\nmv@citex@loop\nmv@citex@end \ifx\nmv@citex@next.\relax \ifnum\spacefactor<\nmv@citex@sfac\else \let\nmv@citex@next\relax \let\nmv@citex@loop\nmv@citex@get@next \fi \fi \expandafter\nmv@citex@punct@aux\natmovechars\@empty \nmv@citex@loop } \newcommand*{\nmv@citex@loop}{} % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\nmv@citex@pnct} % The final part of the punctuation moving system. % \begin{macrocode} \newcommand*{\nmv@citex@punct@aux}{} \def\nmv@citex@punct@aux#1#2\@empty{% \ifx\nmv@citex@next#1\@empty #1% \let\nmv@citex@loop\nmv@citex@get@next \fi \ifx\@empty#2\@empty\else \expandafter\nmv@citex@punct@aux#2\@empty \fi } % \end{macrocode} %\end{macro} %\begin{macro}{\nmv@citex@sfac} % The value of the spacing factor after a full stop is used to signal % doubled punctuation. For French spacing, a bit of patching is % needed. % \begin{macrocode} \mathchardef\nmv@citex@sfac3000\relax \expandafter\def\expandafter\frenchspacing\expandafter{% \frenchspacing \mathchardef\nmv@citex@sfac1001\relax \sfcode`\.\nmv@citex@sfac \sfcode`\?\nmv@citex@sfac \sfcode`\!\nmv@citex@sfac } \ifnum\sfcode`\.=\@m \frenchspacing \fi % \end{macrocode} %\end{macro} %\begin{macro}{\nmv@citex@nat} %\begin{macro}{\nmv@activate} %\begin{macro}{\cite} % The swap has to be done at the beginning of the document. The % internal flag from \pkg{natbib} is used, but under the % circumstances we should be safe. \cs{cite} is also patched to make % the system active. % \begin{macrocode} \newcommand*{\nmv@citex@nat}{} \newcommand*{\nmv@activate}{% \let\nmv@citex@nat\@citex \let\@citex\nmv@citex \let\nmv@cite\cite \renewcommand*{\cite}[2][]{% \nmv@ifmtarg{##1}{% \nmv@citetrue \nmv@cite{##2}% }{% \nmv@citefalse \nmv@cite[##1]{##2}}% }% } % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\nmv@natbib@detect} % So that \pkg{natbib} options can be set without worrying about load % order, \pkg{natmove} doesn't require \pkg{natbib}. So a test is needed % to see if it is actually loaded. This is done as a macro so that the % effect can be changed by \pkg{achemso}. % \begin{macrocode} \newcommand*{\nmv@natbib@detect}{% \@ifpackageloaded{natbib}{% \ifNAT@super \expandafter\nmv@activate \fi }{% \PackageInfo{natmove}{% The natbib package is not loaded.\MessageBreak Loading natmove will do nothing }% }% } \AtBeginDocument{\nmv@natbib@detect} % \end{macrocode} %\end{macro} %\begin{macro}{\natmovechars} % A user macro is needed for moving characters. % \begin{macrocode} \newcommand*{\natmovechars}{.,;:} % % \end{macrocode} %\end{macro} % %\subsection{The configuration files} % % The configuration files for different journals are not very complex. % Keeping everything separate simply helps with maintenance. Most of % this code is very, very boring, and so it is not typeset. % %\iffalse % \begin{macrocode} %<*achre4> \ProvidesFile{achre4.cfg} [2009/04/28 v3.2b achemso configuration: Acc. Chem. Res.] \setkeys{acs}{ biblabel = plain } \renewcommand*{\acs@type@list}{article,suppinfo} \renewcommand*{\abstractname}{Conspectus} % %<*acbcct> \ProvidesFile{acbcct.cfg} [2009/04/28 v3.2b achemso configuration: ACS Chem. Biol.] \setkeys{acs}{ biblabel = fullstop, biochem = true, super = false, usetitle = true } \renewcommand*{\acs@type@list}{article,letter,review,suppinfo} \SectionNumbersOff % %<*ancac3> \ProvidesFile{acbcct.cfg} [2009/04/28 v3.2b achemso configuration: ACS Nano] \setkeys{acs}{ biblabel = fullstop, usetitle = true } \renewcommand*{\acs@type@list}{article,perspective,suppinfo} \SectionNumbersOff % %<*ancham> \ProvidesFile{ancham.cfg} [2009/04/28 v3.2b achemso configuration: Anal. Chem.] \renewcommand*{\acs@type@list}{article,note,suppinfo} \SectionNumbersOff % %<*bichaw> \ProvidesFile{biochem.cfg} [2009/04/28 v3.2b achemso configuration: Biochemistry] \setkeys{acs}{ biblabel = fullstop, biochem = true, super = false, usetitle = true } \SectionNumbersOff % %<*bcches> \ProvidesFile{bcches.cfg} [2009/04/28 v3.2b achemso configuration: Bioconjugate Chem.] \setkeys{acs}{ biochem = true, super = false, usetitle = true } \SectionNumbersOff % %<*bomaf6> \ProvidesFile{bomaf6.cfg} [2009/04/28 v3.2b achemso configuration: Biomacromolecules] \setkeys{acs}{ super = false, usetitle = true } \SectionNumbersOff % %<*bipret> \ProvidesFile{bipret.cfg} [2009/04/28 v3.2b achemso configuration: Biotechnol. Prog.] \setkeys{acs}{ super = false, usetitle = true } \renewcommand*{\acs@type@list}{article,review,suppinfo} \SectionNumbersOff % %<*crtoec> \ProvidesFile{crtoec.cfg} [2009/04/28 v3.2b achemso configuration: Chem. Res. Toxicol.] \setkeys{acs}{ biochem = true, super = false, usetitle = true } \renewcommand*{\acs@type@list}{% article,perspective,profile,review,suppinfo% } \SectionNumbersOff % %<*chreay> \ProvidesFile{chreay.cfg} [2009/04/28 v3.2b achemso configuration: Chem. Rev.] \renewcommand*{\acs@type@default}{review} \renewcommand*{\acs@type@list}{review} % \end{macrocode} % The references section is numbered in \emph{Chem.\ Rev.} % \begin{macrocode} \renewcommand*{\bibsection}{\acs@section{\refname}} % %<*cmatex> % \begin{macrocode} \ProvidesFile{cmatex.cfg} [2009/04/28 v3.2b achemso configuration: Chem. Mater.] \SectionNumbersOff \def\@tempa{communication} \ifx\acs@manuscript\@tempa \AbstractOff \SectionsOff \fi % %<*cgdefu> \ProvidesFile{cgdefu.cfg} [2009/04/28 v3.2b achemso configuration: Cryst. Growth Des.] \renewcommand*{\acs@type@list}{% article,communication,perspective,suppinfo% } \SectionNumbersOff \def\@tempa{communication} \ifx\acs@manuscript\@tempa \SectionsOff \fi % %<*enfuem> \ProvidesFile{enfuem.cfg} [2009/04/28 v3.2b achemso configuration: Energy Fuels] \renewcommand*{\acs@type@list}{article,review,suppinfo} \SectionNumbersOff % %<*esthag> \ProvidesFile{esthag.cfg} [2009/04/28 v3.2b achemso configuration: Environ. Sci. Technol.] \setkeys{acs}{ super = false, usetitle = true } \renewcommand*{\acs@type@list}{article,suppinfo} \SectionNumbersOff % %<*iecred> \ProvidesFile{iecred.cfg} [2009/04/28 v3.2b achemso configuration: Ind. Eng. Chem. Res.] \setkeys{acs}{ biblabel = fullstop, usetitle = true } \SectionNumbersOff % %<*inoraj> \ProvidesFile{inoraj.cfg} [2009/04/28 v3.2b achemso configuration: Inorg. Chem.] \SectionNumbersOff \def\@tempa{communication} \ifx\acs@manuscript\@tempa \AbstractOff \SectionsOff \fi % % \end{macrocode} %\fi % % The \emph{J.~Am.\ Chem.\ Soc.}~configuration is rather more % complicated as there is the need to construct a ``galley-like'' % layout for communications. % \begin{macrocode} %<*jacsat> \ProvidesFile{jacsat.cfg} [2009/04/28 v3.2b achemso configuration: J. Am. Chem. Soc.] \SectionNumbersOff \def\@tempa{communication} \ifx\acs@manuscript\@tempa\else \expandafter\endinput \fi % \end{macrocode} % Everything from here onward applies only to communications. Some % adjustments are now made using the existing tools. % \begin{macrocode} \setkeys{ email = true } \AbstractOff \SectionsOff \AtBeginDocument{\singlespacing} % \end{macrocode} %\begin{macro}{\@xipt} % The class is already using 12 pt text, and the easiest way to change % the size now is to define it by hand. % \begin{macrocode} \twocolumn \renewcommand*{\@xipt}{11} \renewcommand{\normalsize}{% \@setfontsize\normalsize\@ixpt\@xipt } \normalsize \let\@listi\@listI % \end{macrocode} %\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@\relax \abovedisplayshortskip \z@ \@plus3\p@\relax \belowdisplayshortskip 3\p@ \@plus3\p@ \@minus 3\p@\relax \belowdisplayskip\abovedisplayskip\relax \abovecaptionskip 5\p@\relax \intextsep 7\p@ \@plus 2\p@ \@minus 2\p@\relax % \end{macrocode} % \TeX\ is given some extra play with the spacing, as narrow columns % otherwise need a lot of hyphens. % \begin{macrocode} \tolerance=2000\relax \emergencystretch=10pt\relax % \end{macrocode} %\begin{macro}{\acksize} %\begin{macro}{\affilsize} %\begin{macro}{\authorsize} %\begin{macro}{\emailsize} %\begin{macro}{\capsize} %\begin{macro}{\refsize} %\begin{macro}{\suppsize} %\begin{macro}{\titlesize} % To keep things logical, the size macros are given names related to % their function. % \begin{macrocode} \newcommand*{\affilsize}{% \@setfontsize\affilsize\@ixpt\@xpt } \newcommand*{\acksize}{% \@setfontsize\acksize\@ixpt\@xipt } \newcommand*{\authorsize}{% \@setfontsize\authorsize{10.5}{12.5}% } \newcommand*{\capsize}{% \@setfontsize\capsize\@viiipt\@ixpt } \newcommand*{\emailsize}{% \@setfontsize\emailsize\@viiipt{15}% } \newcommand*{\refsize}{% \@setfontsize\refsize{7.5}{7.5}% } \newcommand*{\suppsize}{% \@setfontsize\suppsize{8.5}{10.5}% } \newcommand*{\titlesize}{% \@setfontsize\titlesize\@xiipt{13}% } \let\footnotesize\refsize \let\captionfont\capsize % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\ps@plain} %\begin{macro}{\ps@jacs} % The header styles are 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@author@cnt<\z@\relax \acs@warning{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@author@list \par }% {% \affilsize \itshape \acs@address@list \par }% {% \emailsize \sffamily Received \today; E-mail: \acs@email@list }% \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{ singlelinecheck = off, labelfont = {bf,it,sf}, textfont = sf, labelsep = perquad } \captionsetup[figure]{textfont=rm} % \end{macrocode} %\begin{macro}{\acs@table} %\begin{macro}{\table} % A patch or \cs{table}. % \begin{macrocode} \newcommand*{\acs@table}{} \let\acs@table\table \renewcommand*{\table}{% \capsize \acs@table } % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\acs@par} %\begin{environment}{acknowledgement} %\begin{environment}{suppinfo} % Supporting information and acknowledgements are turned into % environments proper here; this allows control of text size. % \begin{macrocode} \newcommand*{\acs@par}{} \let\acs@par\par \renewenvironment{acknowledgement}{% \def\@tempa{acknowledgement}% \ifx\@currenvir\@tempa \let\par\relax \acksize \vspace{6pt}% \textbf{\acknowledgementname} \else \acs@subsection*{\acknowledgementname} \fi }{% \acs@par } \renewenvironment{suppinfo}{% \def\@tempa{suppinfo}% \ifx\@currenvir\@tempa \let\par\relax \suppsize \vspace{6pt}% \textbf{\suppinfoname:} \else \acs@subsection*{\suppinfoname} \fi }{% \acs@par } % \end{macrocode} %\end{environment} %\end{environment} %\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}% } % % \end{macrocode} % %\iffalse % \begin{macrocode} %<*jafcau> \ProvidesFile{jafcau.cfg} [2009/04/28 v3.2b achemso configuration: J. Agric. Food Chem.] \setkeys{acs}{ super = false, usetitle = true } \renewcommand*{\acs@type@list}{article,suppinfo} \SectionNumbersOff % %<*jceaax> \ProvidesFile{jceaax.cfg} [2009/04/28 v3.2b achemso configuration: J. Chem. Eng. Data] \setkeys{acs}{ usetitle = true } \renewcommand*{\acs@type@list}{article,suppinfo} \SectionNumbersOff % %<*jcisd8> \ProvidesFile{jcisd8.cfg} [2009/04/28 v3.2b achemso configuration: J. Chem. Inf. Model.] \setkeys{acs}{ usetitle = true } \renewcommand*{\acs@type@list}{article,suppinfo} \SectionNumbersOff % %<*jctcce> \ProvidesFile{jctcce.cfg} [2009/04/28 v3.2b achemso configuration: J. Chem. Theory Comput.] \renewcommand*{\acs@type@list}{article,suppinfo} % %<*jcchff> \ProvidesFile{jcchff.cfg} [2009/04/28 v3.2b achemso configuration: J. Comb. Chem.] \renewcommand*{\acs@type@list}{article,report,perspective,suppinfo} \SectionNumbersOff % %<*jmcmar> \ProvidesFile{jmcmar.cfg} [2009/04/28 v3.2b achemso configuration: J. Med. Chem.] \setkeys{acs}{ usetitle = true } \renewcommand*{\acs@type@list}{article,letter,perspective,suppinfo} \SectionNumbersOff % %<*jnprdf> \ProvidesFile{jnprdf.cfg} [2009/04/28 v3.2b achemso configuration: J. Nat. Prod.] \def\@tempa{communication} \ifx\acs@manuscript\@tempa \AbstractOff \SectionsOff \fi % %<*joceah> \ProvidesFile{joceah.cfg} [2009/04/28 v3.2b achemso configuration: J. Org. Chem.] \def\@tempa{communication} \ifx\acs@manuscript\@tempa \AbstractOff \SectionsOff \fi % %<*jpcafh> \ProvidesFile{jpcafh.cfg} [2009/04/28 v3.2b achemso configuration: J. Phys. Chem. A] \renewcommand*{\acs@type@list}{article,letter,suppinfo} \SectionNumbersOff \captionsetup[table]{labelfont=bf,textfont=bf} % \end{macrocode} % Title % \begin{macrocode} \g@addto@macro{\maketitle}{\newpage} % %<*jpcbfk> \ProvidesFile{jpcbfk.cfg} [2009/04/28 v3.2b achemso configuration: J. Phys. Chem. B] \renewcommand*{\acs@type@list}{article,letter,suppinfo} \SectionNumbersOff \captionsetup[table]{labelfont=bf,textfont=bf} \g@addto@macro{\maketitle}{\newpage} % %<*jpccck> \ProvidesFile{jpccck.cfg} [2009/04/28 v3.2b achemso configuration: J. Phys. Chem. C] \renewcommand*{\acs@type@list}{article,letter,suppinfo} \SectionNumbersOff \captionsetup[table]{labelfont=bf,textfont=bf} \g@addto@macro{\maketitle}{\newpage} % %<*jprobs> \ProvidesFile{jprobs.cfg} [2009/04/28 v3.2b achemso configuration: J. Proteome Res.] \setkeys{acs}{ usetitle = true } \renewcommand*{\acs@type@list}{article,review,suppinfo} \SectionNumbersOff % %<*langd5> \ProvidesFile{langd5.cfg} [2009/04/28 v3.2b achemso configuration: Langmuir] \renewcommand*{\acs@type@list}{article,letter,suppinfo} \SectionNumbersOff % %<*mamobx> \ProvidesFile{mamobx.cfg} [2009/04/28 v3.2b achemso configuration: Macromolecules] \SectionNumbersOff % %<*mpohbp> \ProvidesFile{mamobx.cfg} [2009/04/28 v3.2b achemso configuration: Mol. Pharm.] \setkeys{acs}{ usetitle = true } \renewcommand*{\acs@type@list}{article,suppinfo} \SectionNumbersOff % %<*nalefd> \ProvidesFile{nalefd.cfg} [2009/04/28 v3.2b achemso configuration: Nano Lett.] \renewcommand*{\acs@type@default}{letter} \renewcommand*{\acs@type@list}{letter} \SectionNumbersOff % %<*orlef7> \ProvidesFile{orlef7.cfg} [2009/04/28 v3.2b achemso configuration: Org. Lett.] \renewcommand*{\acs@type@default}{letter} \renewcommand*{\acs@type@list}{letter} \SectionNumbersOff % %<*oprdfk> \ProvidesFile{oprdfk.cfg} [2009/04/28 v3.2b achemso configuration: Org. Proc. Res. Dev.] \renewcommand*{\acs@type@list}{article,highlight,review,suppinfo} \SectionNumbersOff % %<*orgnd7> \ProvidesFile{orgnd7.cfg} [2009/04/28 v3.2b achemso configuration: Organometallics] \SectionNumbersOff % % \end{macrocode} %\fi % %\Finale % %\iffalse %<*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 manuscript 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \title{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{manuscript} 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. If the \textsf{mciteplus} package is not installed, the standard bibliography tools will still work but starred references will be ignored. 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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% The "tocentry" environment can be used to create an entry for the %% graphical table of contents. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{tocentry} Some journals require a graphical entry for the Table of Contents. This should be laid out ``print ready'' so that the sizing of the text is correct. Inside the \texttt{tocentry} environment, the font used is Helvetica 8\,pt, as required by \emph{Journal of the American Chemical Society}. The surrounding frame is 9\,cm by 3.5\,cm, which is the maximum permitted for \emph{Journal of the American Chemical Society} graphical table of content entries. The box will not resize if the content is too big: instead it will overflow the edge of the box. This box and the associated title will always be printed on a separate page from the rest of the document. It is best to place the graphical TOC entry as the last item in the draft so that the page break is not a problem. \end{tocentry} \end{document} % %<*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 %FUNCTION {default.is.use.title} { #0 } %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$ } % 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 > % { add.comma.or.semicolon t * } % { add.comma t * } { numnames #2 > { "" * } 'skip$ if$ t "others," = { bbl.etal space.connect } % { add.comma.or.semicolon t * } % { 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 := % #1 'separate.by.semicolon := author format.names } if$ } FUNCTION {format.editors} { editor empty$ { "" } { #2 'author.or.editor := % #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> FUNCTION {format.date} { year empty$ { "" } { "(" year ")" * * } if$ } % 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 := % format.date "year" output.check % after.item 'output.state := add.title journal emphasize "journal" output.check after.item 'output.state := % 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$ "\providecommand*{\mcitethebibliography}{\thebibliography}" write$ newline$ "\csname @ifundefined\endcsname{endmcitethebibliography}" write$ newline$ "{\let\endmcitethebibliography\endthebibliography}{}" write$ newline$ "\begin{mcitethebibliography}{" number.label int.to.str$ * "}" * write$ newline$ "\providecommand*{\natexlab}[1]{#1}" write$ newline$ "\providecommand*{\mciteSetBstSublistMode}[1]{}" write$ newline$ "\providecommand*{\mciteSetBstMaxWidthForm}[2]{}" write$ newline$ "\providecommand*{\mciteBstWouldAddEndPuncttrue}" write$ newline$ " {\def\EndOfBibitem{\unskip.}}" write$ newline$ "\providecommand*{\mciteBstWouldAddEndPunctfalse}" write$ newline$ " {\let\EndOfBibitem\relax}" write$ newline$ "\providecommand*{\mciteSetBstMidEndSepPunct}[3]{}" write$ newline$ "\providecommand*{\mciteSetBstSublistLabelBeginEnd}[3]{}" write$ newline$ "\providecommand*{\EndOfBibitem}{}" 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} % %<*bib> @ARTICLE{Abernethy2003, author = {Colin D. Abernethy and Gareth M. Codd and Mark D. Spicer and Michelle K. Taylor}, title = {{A} highly stable {N}-heterocyclic carbene complex of trichloro-oxo-vanadium(\textsc{v}) displaying novel {C}l---{C}(carbene) bonding interactions}, journal = {{J}. {A}m. {C}hem. {S}oc.}, year = {2003}, volume = {125}, pages = {1128--1129}, number = {5}, doi = {10.1021/ja0276321}, } @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}, } % %\fi