% \iffalse meta-comment
%<*internal>
\iffalse
%</internal>
%<*readme>
The chemstyle bundle - Schemes and style for chemistry
======================================================

The `chemstyle` bundle provides two packages: `chemstyle` and
`chemscheme`.  Both are intended to help chemists create floating
graphics and match published styles.

The `chemscheme` package consists of two parts, both related to
chemical schemes.  The package adds a `scheme` float type to the
LaTeX default types figure and table. The `scheme` float type
acts in the same way as those defined by the LaTeX kernel, but
is intended for chemical schemes.  The package also provides a
method for adding automatic chemical numbering to schemes.

The `chemstyle` package provides a "one-stop shop" for setting up
formatting of LaTeX documents following the editorial policies
of various chemical journals.  It provides a number of handy
chemistry-related commands, and loads several support packages
to aid the chemist.

Installation
------------

The package is supplied in `.dtx` format and as a pre-extracted
`.zip` file, `chemstyle.tds.zip`. The later is most convenient
for most users: simply unzip this in your local `texmf`
directory. If you want to unpack the `.dtx` yourself, running
`tex chemstyle.dtx` will extract the package whereas `latex
chemstyle.dtx` will extract it and also typeset the
documentation.

Typesetting the documentation requires a number of packages in
addition to those needed to use the package. This is mainly 
because of the number of demonstration items included in the 
text. To compile the documentation without error, you will 
need the packages:
 - `booktabs`
 - `csquotes`
 - `helvet`
 - `mathpazo`
 - `mhchem`
 - `microtype`
 - `listings`
 - `lmodern`
%</readme>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
  \expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\preamble
----------------------------------------------------------------
The chemstyle bundle --- Schemes and style for chemistry
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

Copyright (C) 2006-2011,2013 by
  Joseph Wright <joseph.wright@morningstar2.co.uk>

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  chemstyle.dtx and
                                chemstyle.cdx,
          and the derived files chemstyle.pdf,
                                chemstyle.ins,
                                chemstyle.sty,
                                chemscheme.sty,
                                and a number of .cfg files.
                                
\endpostamble
\usedir{tex/latex/chemstyle}
\generate{
  \file{chemstyle.sty}{\from{chemstyle.dtx}{package}}
  \file{chemscheme.sty}{\from{chemstyle.dtx}{chemscheme}}
}
\usedir{tex/latex/chemstyle/config}
\generate{
  \file{angew.chemstyle.cfg}{\from{chemstyle.dtx}{angew}}
  \file{ic.chemstyle.cfg}{\from{chemstyle.dtx}{ic}}
  \file{jacs.chemstyle.cfg}{\from{chemstyle.dtx}{jacs}}
  \file{jomc.chemstyle.cfg}{\from{chemstyle.dtx}{jomc}}
  \file{rsc.chemstyle.cfg}{\from{chemstyle.dtx}{rsc}}
  \file{orglett.chemstyle.cfg}{\from{chemstyle.dtx}{orglett}}
  \file{tetlett.chemstyle.cfg}{\from{chemstyle.dtx}{tetlett}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/chemstyle}
\generate{
  \file{chemstyle.ins}{\from{chemstyle.dtx}{install}}
}
\nopreamble\nopostamble
\usedir{doc/latex/chemstyle}
\generate{
  \file{README.txt}{\from{chemstyle.dtx}{readme}}
  \file{chemstyle-demo.tex}{\from{chemstyle.dtx}{demo}}
  \file{scheme-one.eps}{\from{chemstyle.dtx}{scheme}}
  \file{scheme-two.eps}{\from{chemstyle.dtx}{scheme,labels}}
}
\ifx\fmtname\nameofplainTeX
  \expandafter\endbatchfile
\else
  \expandafter\endgroup
\fi
%</internal>
%<*package|chemscheme>
\NeedsTeXFormat{LaTeX2e}
%</package|chemscheme>
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage[T1]{fontenc}
\usepackage{array,booktabs,chemstyle,csquotes,lmodern}
\usepackage[scaled=0.95]{helvet}
\usepackage[final]{listings,microtype}
\usepackage[osf]{mathpazo}
\usepackage[version=3]{mhchem}
\IfFileExists{auto-pst-pdf.sty}{
  \usepackage[crop=off,ext=dtx,final,runs=2]{auto-pst-pdf}
}{
  \PackageWarning{chemstyle}{%
    No auto-pst-pdf found:\MessageBreak
    Compile documentation with latex \MessageBreak
    (and not pdflatex)%
  }
}
\usepackage[numbered]{hypdoc}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{chemstyle.dtx}
\end{document}
%</driver>
% \fi
%
%\CheckSum{0}
%
%\GetFileInfo{chemstyle.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    = {
%      ce,
%      cmc,
%      cstsetup,
%      etc,
%      eg,
%      etal,
%      floatcontentscenter,
%      floatcontentscentre,
%      floatcontentsleft,
%      floatcontentsright,
%      floatsetup,
%      floatstyle,
%      Hz,
%      ie,
%      iBu,
%      iPr,
%      includegraphics,
%      invacuo,
%      latin,
%      mmHg,
%      molar,
%      Molar,
%      nBu,
%      nPr,
%      restylefloat,
%      sBu,
%      standardstate,
%      tBu
%    }
%  }^^A 
%}
%\newcommand*\LaTeXdemo@input{^^A
%  \MakePercentComment
%  \catcode`\^^M=10\relax
%  \small
%  \begingroup
%    \setkeys{lst}{
%      SelectCharTable=\lst@ReplaceInput{\^\^I}{\lst@ProcessTabulator}
%    }^^A
%    \leavevmode 
%      \input{chemstyle.tmp}^^A
%  \endgroup
%  \MakePercentIgnore
%}
%\LaTeXdemo@new{code and example}{^^A
%  \setbox\LaTeXdemo@box=\hbox\bgroup
%    \lst@BeginAlsoWriteFile{chemstyle.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 and float}{^^A
%  \lst@BeginAlsoWriteFile{chemstyle.tmp}^^A
%  \LaTeXdemo@common
%}{^^A
%  \lst@EndWriteFile
%  \LaTeXdemo@input
%}
%\LaTeXdemo@new{code only}{^^A
%  \LaTeXdemo@common
%}{^^A
%}
%
%\providecommand*\eTeX{\ensuremath{\varepsilon}-\TeX}
%\providecommand*\file{\texttt}
%\providecommand*\opt{\texttt}
%\providecommand*\pkg{\textsf}
%
%\DoNotIndex{\begin,\documentclass,\end,\usepackage}
%
%\makeatother
%
%\title{^^A
%  The \textsf{chemstyle} bundle --- Schemes and style for 
%    chemistry\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}{2006/08/06}{Initial release of package}
%\changes{v2.0f}{2010/01/30}{Detect use of \pkg{achemso} class and
%  abort loading of \pkg{chemstyle} and \pkg{chemscheme}}
%
%\begin{abstract}
%  The \textsf{chemstyle} bundle provides two packages: 
%  \textsf{chemstyle} and \textsf{chemscheme}.  Both are intended to 
%  help chemists create floating graphics and match published styles.
%
%  The \textsf{chemscheme} package consists of two parts, both related 
%  to chemical schemes.  The package adds a scheme float type to the 
%  \LaTeX\ default types figure and table. The scheme float type acts in
%  the same way as those defined by the \LaTeX\ kernel, but is intended 
%  for chemical schemes.  The package also provides a method for adding 
%  automatic chemical numbering to schemes.
%
%  The \textsf{chemstyle} package provides a \enquote{one-stop shop} for 
%  setting up formatting of \LaTeX\ documents following the editorial
%  policies of various chemical journals.  It provides a number of handy
%  chemistry-related commands, and loads several support packages to aid 
%  the chemist.
%\end{abstract}
%
%\begin{multicols}{2}
%  \tableofcontents
%\end{multicols}
%
%\section{Introduction}
%
% The \pkg{chemstyle} bundle consists of two parts. The first, 
% the \pkg{chemstyle} package itself, aims to provide an easy and
% reliable method to set up various document parameters (such as 
% caption formatting), simply by specifying the model journal.  The 
% package has also been designed to allow rapid addition of new journal
% styles.  Each style definition is a separate file, and new styles can
% be added very readily. The formatting system provided by 
% \pkg{chemstyle} are intended for writing a variety of documents.  
% Thus, the stylistic changes made by the package do not seek to 
% reproduce the appearance of printed journal articles.  The package 
% aims to be suitable for use in preparing drafts of papers, but also 
% for writing reports, theses and so on.
% 
% The second part of the bundle is the \pkg{chemscheme} package, which
% is loaded automatically by \pkg{chemstyle}. \pkg{chemscheme} 
% undertakes two tasks. First, it provides a floating \texttt{scheme} 
% environment, which acts in the same way as the kernel \texttt{figure}
% and \texttt{table} floats. Secondly, it interfaces with either the
% \pkg{chemcompounds} or \pkg{bpchem} packages to allow automatic
% numbering of chemical compounds inside graphics.
% 
% This manual is written to cover both packages. All of the material
% is relevant to users of the \pkg{chemstyle} package. For those only
% using \pkg{chemscheme}, 
%
%\section{Installation}
%
% The entire bundle is supplied with the TDS-ready ZIP file,
% \file{chemstyle.tds.zip}.  Simply unzip this into your local texmf
% tree and run your hash program: \texttt{texhash} should work with
% recent versions of either \TeX\ Live or MiK\TeX.
%
% To extract the bundle of files from \file{chemstyle.dtx}, run 
% (pdf)\TeX\ on \file{chemstyle.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{chemstyle.dtx}: you will need to enable \enquote{write18} if 
% you compile in PDF mode.
%
%\section{Requirements}
%
% The \pkg{chemstyle} class requires the following packages:
%\begin{itemize}
%  \item \pkg{amstext} (part of the AMS bundle);
%  \item \pkg{caption};
%  \item either \pkg{float} or \pkg{floatrow};
%  \item \pkg{kvoptions} (part of the \pkg{oberdiek} bundle);
%  \item either \pkg{siunitx} or \pkg{SIunits} (otherwise no 
%    units are defined);
%  \item \pkg{psfrag};
%  \item \pkg{varioref} (part of the standard \pkg{tools} bundle):
%    only loaded if not turned off;
%  \item \pkg{xspace} (part of the standard \pkg{tools} bundle).
%\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}.
% 
%\DescribeOption{varioref}
%\changes{v2.0a}{2009/08/23}{New \opt{varioref} option}
% The option \opt{varioref} can be used to determine whether 
% \pkg{chemstyle} loads the \pkg{varioref} package. For example,
% users of \pkg{cleveref} will want to turn off loading of
% \pkg{varioref} using:
%\begin{LaTeXdemo}[code only]
%  \usepackage[varioref=false]{chemstyle}
%\end{LaTeXdemo} 
% Users loading \pkg{hyperref} should note that if you want to use
% \cs{autoref} then you should disable loading of \pkg{varioref}, to
% avoid double labelling of float names!
% 
%\section{The \pkg{chemstyle} package: tools for chemistry}
%
% The package recognises a number of key--value options when loading.
% Some of these are also available in the document body, and are 
% described along with the relevant commands. Options which apply to
% \pkg{chemscheme} can be given when loading \pkg{chemstyle} and will
% be applied correctly.
% 
%\DescribeOption{journal}
% \pkg{chemstyle} is supplied with a number of configuration files, 
% based on the styles adopted by a number of chemistry journals 
% (\ref{styles}). A style can be chosen by loading the package with 
% the \opt{journal=\meta{style}} key.
%\begin{table}
%  \begin{tabular}{ll}
%    \toprule
%    Option & Journals using this style \\
%    \midrule
%    angew & \emph{Angew.\ Chem.}, \emph{Chem.\ Eur.\ J.} \\
%    jomc & \emph{J.\ Organomet.\ Chem.},
%      \emph{Coord.\ Chem.\ Rev.} \\
%    ic & \emph{Inorg.\ Chem.} \\
%    jacs & \emph{J.\ Am.\ Chem.\ Soc.} \\
%    jcp & \emph{J.\ Phys.\ Chem.\ A}, \emph{J.\ Phys.\ Chem.\ B} \\
%    orglett & \emph{Org.~Lett.}\\
%    rsc & \emph{Chem.\ Commun.}, \emph{Org.\ Biomol.\ Chem.} \\
%     & \emph{Dalton Trans.} \\
%    tetlett & \emph{Tetrahedron}, \emph{Tetrahedron Lett.} \\
%    \bottomrule
%  \end{tabular}
%  \caption{Styles provided by \pkg{chemstyle}}
%  \label{styles}
%\end{table}
% 
%\DescribeMacro{\cstsetup}
% Many of the package options can be altered anywhere in the document, 
% using the \cs{cstsetup} macro. This accepts a \pkg{keyval} list and 
% processes it as needed.
% 
%\section{Naming of the references section}
%
% \pkg{chemstyle} alters the naming of the references section of a 
% document. By default, \pkg{chemstyle} alters the value of \cs{bibname} 
% or \cs{refname} (as appropriate) to the form of words chosen by the
% target journal for the \enquote{References} section.
%
% The \enquote{\refname} naming commands are language-aware, \emph{via} the
% \pkg{babel} interface.  Currently, \pkg{chemstyle} includes appropriate
% labels for \pkg{babel} languages \opt{english}, \opt{german}, 
% \opt{french} and \opt{italian}. Other languages can be added if appropriate
% wordings are provided to the author. The naming system is designed to work 
% correctly with both \pkg{natbib} and \pkg{biblatex}.
%
%\DescribeOption{notes}
%\DescribeOption{nonotes}
%\DescribeOption{notesbefore}
% The package recognises the \opt{notes} option for controlling how
% the references section is named.  The accepts the values
% \opt{true}, \opt{false} and \opt{auto}.  The Boolean values either
% enable or disable the addition of \enquote{Notes and} to the
% \enquote{References} of the section title.  The \opt{auto} option works
% in conjunction with the \pkg{notes2bib} package.  If notes are
% added, \enquote{Notes and} is included in the section title, whereas if
% no notes are given the section title remains as \enquote{References}.
% The \opt{nonotes} option is equivalent to \opt{notes=false}.
% The second option for this area is \opt{notesbefore}.  This takes
% \opt{true} and \opt{false} only, and sets whether \enquote{Notes and
% References} or \enquote{References and Notes} is produced.
% 
%\subsection{Additional units}
%
%\DescribeMacro{\cmc}
%\DescribeMacro{\Hz}
%\DescribeMacro{\molar}
%\DescribeMacro{\Molar}
%\DescribeMacro{\mmHg}
% There are a few units which are useful for chemists that are not 
% defined by the standard unit packages and are created here if 
% necessary.
%\begin{LaTeXdemo}
%  \SI{10}{\cmc}   \\
%  \SI{20}{\Hz}    \\
%  \SI{30}{\molar} \\
%  \SI{40}{\Molar} \\
%  \SI{50}{\mmHg}  
%\end{LaTeXdemo}
%
%\subsection{The standard state symbol}
%
%\DescribeMacro{\standardstate}
% Related to the above, but not exactly a unit is the
% \cs{standardstate} command.\footnote{The \cs{standardstate} macro
% is only defined if the user does not have their own version.}  This
% generates the tricky \cs{standardstate} symbol. The symbol will
% adapt to local sizing.
%\begin{LaTeXdemo}
%  the standard conditions are indicated: \standardstate\\
%  Common but not correct:
%    $\Delta G_\mathrm{f}^\standardstate$ or
%    $\Delta G_\mathrm{f}{}^\standardstate$  \\
%  Better:
%    $\Delta_\mathrm{f}G^\standardstate$ \\
%  Sizing:
%    $\int^{T_{\mathrm{out}}}_{T^\standardstate}$
%\end{LaTeXdemo}
% 
%\subsection{Latin phrases}
%
%\DescribeMacro{\latin}
%\DescribeMacro{\etc}
%\DescribeMacro{\eg}
%\DescribeMacro{\ie}
%\DescribeMacro{\etal}
%\DescribeMacro{\invacuo}
% The various Latin phrases commonly used in chemistry are made
% available as the obvious commands.  By altering the definition of
% \cs{latin}, this allows ready switching from italic to Roman
% typesetting.  Notice that \cs{etc}, \cs{ie} and \cs{eg} are aware
% of trailing periods, and so doubling-up should not occur. 
%\begin{LaTeXdemo}
%  \latin{some text} \\
%  \eg               \\
%  \etal             \\
%  \etc              \\
%  \ie               \\
%  \invacuo
%\end{LaTeXdemo}
%
%\DescribeOption{abbremph}
% The use of italic for these abbreviations is set by altering the
% package option \opt{abbremph}, which takes values \opt{true} and
% \opt{false}.
%\begin{LaTeXdemo}
%  \etal\ \ie \\
%  \cstsetup{abbremph=false}
%  \etal\ \ie \\
%\end{LaTeXdemo}
%
%\DescribeOption{abbrcomma}
% For American journals, where it is obligatory to follow \enquote{\eg} and
% \enquote{\ie} with a comma, the package provides a mechanism for handling
% this automatically.  Thus, when using an appropriate journal style,
% |\eg|, |\eg.| and |\eg,| will all result in typesetting \enquote{\eg,}.
% The Boolean package option \opt{abbrcomma} controls this.
%\begin{LaTeXdemo}
%  \eg this\\
%  \cstsetup{abbrcomma=true}
%  \ie that
%\end{LaTeXdemo}
%
% The \cs{etc} and \cs{etal} commands are set up on the
% assumption that they come at the end of a sentence.  Hence the
% spacing after these will default to an inter-sentence space.  If
% you desire an inter-word space, use the normal methods
%\begin{LaTeXdemo}
%  \etc\ more text \\
%  \etal~have shown
%\end{LaTeXdemo}
%
%\DescribeOption{phrases}
%\DescribeOption{nophrases}
% The definitions of all of the phrases are designed not to overwrite
% any given by the user \emph{in the preamble}.  So, if you have your
% own \cs{latin} macro, it will be used even if you load \pkg{chemstyle}. 
% If you encounter any problems, try loading the package with the
% \opt{nophrases} option; this option prevents the package even
% trying to define any of the phrase macros. The \opt{phrases} option
% acts as a complement to \opt{nopharses}, so that \opt{phrases=false}
% is the same as \opt{nophrases=true}.
% 
%\subsection{Alkyl radicals}
%
%\DescribeMacro{\nPr}
%\DescribeMacro{\iPr}
%\DescribeMacro{\nBu}
%\DescribeMacro{\iBu}
%\DescribeMacro{\sBu}
%\DescribeMacro{\tBu}
% There are a few alkyl radicals that come up all of the time.  No
% one seems to have put these into a package, so they are provided
% here. As you would expect, \cs{iPr} gives \iPr, \cs{iBu} gives \iBu
% and \cs{tBu} gives \tBu, and so on.  The style of the output
% depends on the journal style specified; most journals seem to
% favour one version of the abbreviation.
%\begin{LaTeXdemo}
%  The alkyl group could be   \\
%  \nPr, \iPr or \nBu without \\
%  affecting the selectivity.
%\end{LaTeXdemo}
% These should also work inside the \cs{ce} macro of \pkg{mhchem} when
% if escaped mode:
%\begin{LaTeXdemo}
%  \ce{$\nBu$2CH-C($\iPr$)3}
%\end{LaTeXdemo}
%
%\DescribeOption{rademph}
%\DescribeOption{radhyphen}
%\DescribeOption{radprefix}
%\DescribeOption{radsuper}
% The appearance of these radical abbreviations is controlled by the
% package options \opt{rademph}, \opt{radhyphen}, \opt{radprefix} and
% \opt{radsuper}.  The journal styles set these automatically, but
% they can be redefined at any point.  The options work as might be
% expected, and are Boolean switches.
%\begin{LaTeXdemo}
%  \cstsetup{
%    radhyphen = false,
%    radsuper = true}
%  \iPr \tBu \\
%  \cstsetup{
%    radhyphen = true,
%    radsuper  = false,
%    radprefix = false,
%    rademph   = false
%  }
%  \iBu \sBu
%\end{LaTeXdemo}
%
%\DescribeOption{xspace}
% The package can use \pkg{xspace} to automatically insert space after
% the alkyl radical macros. This is controlled using the \opt{xspace}
% option.
%\begin{LaTeXdemo}
%  \cstsetup{
%    xspace = true
%  }
%  Some text \iPr some more text\\
%  \cstsetup{
%    xspace = false
%  }
%  Some text \iPr some more text
%\end{LaTeXdemo}
%
%\section{The \pkg{chemscheme} package: graphics for chemistry}
%
%\subsection{Floating schemes}
%
% By default, \LaTeX\ defines two float types, \texttt{figure} and
% \texttt{table}. Synthetic chemists make heavy use of schemes,
% which need a \texttt{scheme} float type.  This is provided by
% \pkg{chemscheme}, in a manner consistent with the kernel floats.
% 
%\DescribeEnv{scheme}
% The package provides a new float type, scheme, accessed in the
% usual way.
%\begin{LaTeXdemo}[code and float]
%  \begin{scheme}[ht]
%    \includegraphics{scheme-one}
%    \caption{A scheme with no compound numbers.}
%  \end{scheme}
%\end{LaTeXdemo}
% The \texttt{scheme} float is designed to behave in the same way as the
% standard \LaTeX\ float environments \texttt{figure} and 
% \texttt{table}.  Thus schemes will be placed at the top of a page,
% where possible. As shown in the example, the use of positional
% modifiers is allowed. Labelling and referencing schemes also follows
% the \LaTeX\ conventions.  \pkg{chemscheme} works hard to emulate the
% document class in use, and so the exact behaviour will depend on 
% whether the standard classes, \textsc{koma}-Script or \pkg{memoir} 
% are being used.
% 
%\DescribeMacro{\schemename}
% \cs{schemename} contains the text used in scheme captions (by
% default \schemename).  This is used in the same manner as
% \cs{figurename} or \cs{tablename} to set up the text used in scheme
% captions.
%\begin{LaTeXdemo}[code and float]
%  \renewcommand*{\schemename}{Illustration}
%  \begin{scheme}[ht]
%    \includegraphics{scheme-one}
%    \caption{A scheme that is not a Scheme!}
%  \end{scheme}
%\end{LaTeXdemo}
% 
%\DescribeMacro{\listofschemes}
%\DescribeMacro{\listschemename}
% To match the \cs{listoffigures} and \cs{listoftables} macros
% provided by the \LaTeX\ kernel, \pkg{chemscheme} provides a
% \cs{listofschemes} command.  This works in the same way as the
% kernel commands, with the default text stored in the macro
% \cs{listschemename}. The standard output is illustrated below.
% \listofschemes
% 
%\DescribeOption{floats}
% Which method is used to generate the new float is controlled by
% the \opt{floats} option, which recognises \opt{float}, \opt{floatrow}
% and \opt{memoir}. The \opt{memoir} option is ignored if not using
% the \pkg{memoir} class, or if \pkg{chemstyle} is in 
% use.\footnote{\pkg{memoir} is not capable of some of the float
% manipulation needed by \pkg{chemstyle}.}
%
%\subsection{Reference numbers in graphics}
%
% There are a number of packages available for tracking compound 
% reference numbers.  The two with the most up to date and
% comprehensive features are \pkg{bpchem} and \pkg{chemcompounds}.
% Both allow in-text numbering to be handled automatically.  However,
% neither will allow the use of these numbers directly in schemes,
% figures, \etc.  Both leave it to the user to manually adapt schemes
% to match any changes in numbering.
%
% The \pkg{chemscheme} package provides a mechanism for rectifying this
% issue.  The package makes use of the \pkg{psfrag} package, which
% means that it can only directly produce DVI output (using \LaTeX).
% However, direct PDF output using pdf\LaTeX\ is possible: see
% Section~\ref{demo}. However, it \emph{will not work} with XeTeX
% as the underlying \pkg{psfrag} package does not with XeTeX.
% 
% Getting automated numbers into schemes is a two step procedure. In
% the first step, schemes (or other graphics) should be prepared as
% normal and saved as encapsulated postscript (EPS) files. The most
% popular chemistry drawing package, \textsc{ChemDraw}, is able to do
% this from the \texttt{Save As \ldots} dialogue. The positions where 
% the auto-labels should be have to be marked in the EPS file. The 
% marker should consist of an \enquote{indicator} that the text is to be 
% replaced, followed by a reference number or letter.  For automated 
% substitution, the \enquote{indicator} text should be the same in all 
% graphics.
% 
%\DescribeMacro{\schemeref}
% In the second step, the command \cs{schemeref} is used to indicate
% the mapping of the temporary markers to the automatically-managed
% numbering. The syntax of the command is
% \cs{chemschemeref}\oarg{temp-marker}\marg{label}, where
% \meta{temp-marker} is the marker used in the graphic, and
% \meta{label} is the name assigned to the compound by the user. By
% default, \pkg{chemscheme} will assume that \meta{temp-marker} 
% consists of the marker plus a number, beginning at 1 and 
% incrementing by 1 for each additional structure inside one float. 
% Each replacement requires a separate \cs{chemschemeref}, all of 
% which should appear before the relevant \cs{includegraphics} command.
% 
% An example will make usage clearer. In the example used in this
% document, the starting material is given label \texttt{IMesHCl} and
% the product is called \texttt{IMes}.  As is shown in the next
% example, in the EPS file these are labelled \textsf{TMP1} and
% \textsf{TMP2}, respectively. The automated package defaults are
% used.
%\begin{LaTeXdemo}[code and float]
%  \begin{scheme}[ht]
%    \includegraphics{scheme-two}
%    \caption{A scheme with temporary compound numbers.}
%  \end{scheme}
%  \begin{scheme}[ht]
%    \schemeref{IMesHCl}
%    \schemeref{IMes}
%    \includegraphics{scheme-two}
%    \caption{A scheme with automated compound numbers.}
%  \end{scheme}
%\end{LaTeXdemo}
% If the marker text is given as an optional argument to
% \cs{schemeref}, it must include the entire text to be matched.
%\begin{LaTeXdemo}[code and float]
%  \begin{scheme}[ht]
%    \schemeref[TMP1]{IMesHCl}
%    \schemeref[TMP2]{IMes}
%    \includegraphics{scheme-two}
%    \caption{A scheme with explicitly numbered temporary labels.}
%  \end{scheme}
%\end{LaTeXdemo}
% Notice that the new label is centred on the middle of the temporary
% marker, with the same baseline.  This should allow the user to
% obtain good alignment of labels and structures.
% 
%\DescribeMacro{\schemerefmarker}
% When using automatic substitution mode, the \enquote{marker} text to be
% searched for is stored as \cs{schemerefmarker}, which has
% default value \texttt{\schemerefmarker}. Thus the graphics should 
% contain labels \textsf{\schemerefmarker1}, \textsf{\schemerefmarker2}, 
% \emph{etc}. The value can be changed using \cs{renewcommand*}.
% 
%\DescribeMacro{\schemerefformat}
% The format of chemical references is controlled by the underlying
% package, \pkg{bpchem} or \pkg{chemcompounds}.  However, it is
% useful to be able to specify additional formatting for schemes.  By
% default, \pkg{chemscheme} formats all reference numbers in a sans 
% serif font. This is controlled by \cs{schemerefformat}.
%\begin{LaTeXdemo}[code and float]
%  % This needs the color or xcolor package loaded
%  \renewcommand*{\schemerefformat}{%
%    \color{magenta}\textit
%  }%  
%  \begin{scheme}[ht]
%    \schemeref{IMesHCl}
%    \schemeref{IMes}
%    \includegraphics{scheme-two}
%    \caption{A scheme with altered label formatting.}
%  \end{scheme}
%\end{LaTeXdemo}
%
%\DescribeMacro{\schemerefsub}
% The \pkg{bpchem} package allows tracking of sub-labels (\textbf{1a},
% \textbf{1b}, \emph{etc.}).  To allow use of these in schemes, the
% \cs{schemerefsub} command is provided.  This takes an additional
% argument \marg{sub-label}, which is used to generate the
% appropriate text.  When used with \pkg{chemcompounds}, this command
% will gobble its arguments and issue a warning; no substitution will
% take place.
% 
%\DescribeOption{tracking}
% The choice of using \pkg{chemcompounds} or \pkg{bpchem} can be made
% by giving the key--value option \opt{tracking=\meta{package}} when
% loading \pkg{chemscheme}. This recognises the values \opt{bpchem}
% and \opt{chemcompounds}, with the later as the default.
%
%\section{Horizontal positioning of all floats}
%
%\DescribeMacro{\floatcontentscentre}
%\DescribeMacro{\floatcontentscenter}
%\DescribeMacro{\floatcontentsleft}
%\DescribeMacro{\floatcontentsright}
% The \LaTeX\ default is to position all float contents flush-left.
% There is no \enquote{hook} provided to alter this.  The \pkg{chemscheme}
% package therefore provides commands to align all float contents
% automatically.  As the macro names make clear,
% \cs{floatcontentscentre} will make all floats centred (for users
% speaking U.S.~English, the alternative spelling
% \cs{floatcontentscenter} is also available).  The default behaviour
% is restored using the command \cs{floatcontentsleft}. Finally,
% \cs{floatcontentsright} is provided  for use if needed. Notice that
% the float positioning commands should be given \emph{outside}
% floating environments, and apply to all subsequent floats.
%\begin{LaTeXdemo}[code and float]
%  \floatcontentsleft
%  \begin{scheme}[ht]
%    \includegraphics{scheme-one}
%    \caption{A flush-left scheme.}
%  \end{scheme}
%  \floatcontentsright
%  \begin{scheme}[ht]
%    \includegraphics{scheme-one}
%    \caption{A flush-right scheme.}
%  \end{scheme}
%  \floatcontentscentre
%\end{LaTeXdemo}
%
% It is important to note that the positioning mechanism used here
% relies on a low-level hack of the \LaTeX\ kernel.  This has been
% tested with the standard \LaTeX\ classes, the \pkg{memoir} class
% and the \textsc{koma}-Script bundled.  Other document classes may
% not give the desired behaviour.
% 
%\section{Some thoughts on generating chemical schemes}
%
%\subsection{Overview}
% There are a number of ways of generating the graphical content of
% schemes.  The choice of method will depend on what is available to
% the user, and how complex the schemes desired are. In this section,
% an overview of several approaches is given.\footnote{Thanks to
% Norwid-R.\ Behrnd for suggesting this section and giving a number
% of useful examples and tips.}  The package author, who is a
% research worker in a university, favours using \textsc{ChemDraw} as
% it is regarded by many synthetic chemists as the best tool for this
% job.  However, this is clearly overkill for users requiring a
% single diagram on a one-off basis. \textsc{ChemDraw} is also a
% commercial package running only under Windows and MacOS X. The
% following is necessarily somewhat brief and selective.  
% 
%\subsection{Macro-based methods}
% At the most basic, a chemical scheme is simply a collection of
% lines and symbols, as with any vector diagram.  Hence, it is
% possible to construct schemes directly using packages such as
% PSTricks or \pkg{pgf}/Ti\emph{k}z.  This is a complex method, and
% cannot be recommended for anyone except the very experienced and
% brave.
%
% At a more practical level, there are two packages available which
% allow typesetting of chemical structures in \TeX, using
% specialised commands: XyM\TeX\ and ppch\TeX.  Recent versions of
% the XyM\TeX\ package have not been made available on \textsc{CTAN}, 
% and the version held there is therefore considered to be obsolete.  
% On the
% other hand, the ppch\TeX\ system, developed originally for
% Con\TeX{}t, is available. Both systems suffer from the lack of
% chemical logic in the input: it is very hard to tell from the code
% what is being represented. Drawing items such as \enquote{curly arrows},
% or making subtle alterations to positioning, is very challenging in
% purely macro-based systems.  For these reasons, it is usually much
% more sensible to examine the available graphical methods.
%
%\subsection{Graphical methods}
%
% Moving to graphical systems, there is no reason that
% general-purpose vector drawing packages cannot be used for schemes.
% There are obviously several commercial (\textsc{CorelDraw},
% \textsc{Adobe Illustrator}, \etc) and freeware (for example
% the \textsc{gimp}) drawing packages that can be used in this way.
% Simply rings and lines can easily be constructed, although in
% general-purpose programs the user has to watch that all bonds
% are the same length.
%
% For producing a large number of complex schemes, the particular
% abilities of dedicated software become a necessity. As well as the
% already-mentioned \textsc{ChemDraw}, programs such as \textsc{ISIS
% Draw} and \textsc{ChemSketch} are available free for personal
% use;\footnote{\enquote{Free} as in without charge, not as in open
% source.} these programs are all Windows specific.  In the
% open-source arena, there are a number of packages such as
% \textsc{XDrawChem} and \textsc{BKchem}, which offer cross-platform
% functionality.  The differences between the various packages are in
% the ease of use, and ability to generate well-formatted output (for
% example, aligning structures). A more recent addition to this 
% group of packages is the cross-platform \textsc{ChemDoodle}, which
% look promising but is not free in any sense.
%
% One which deserves mention for the \TeX\ user is TpX.  This is a
% general purpose Windows graphics program specifically aimed at
% producing \TeX-friendly output (such as PSTricks and Ti\emph{k}z
% code) from a graphical interface. TpX can accept clipboard data
% from other programs, so can be used to produce EPS files from
% programs which do not have native export facilities (such as
% \textsc{ISIS Draw}).
% 
%\section{Additional information}
%
%\subsection{Interactions with other packages}
%
% \pkg{chemstyle} and \pkg{chemscheme} are designed to avoid, as far as
% possible, clashes with other packages.  The standard packages
% \pkg{graphicx} and \pkg{varioref} are used by the bundle. If you 
% need to load these with specific options, this needs to be done
% \emph{before} loading \pkg{chemstyle} (or \pkg{chemscheme}). 
%
%\subsection{Captions above floats}
%
% The \texttt{scheme} float type is generated using either the
% \pkg{float} or \pkg{floatrow} package. This has the side-effect
% that the placement of captions for floats does not depended on
% where the \cs{caption} command comes inside the floating
% environment.\footnote{Normally this is a good thing.} If you wish
% to alter the placement of captions, the mechanism of the underlying
% package will be needed.  There are some subtle differences between
% the two: although \pkg{floatrow} provides the \pkg{float} macros,
% they are not all $100\,\%$ compatible.  This document is compiled 
% using \pkg{floatrow}, and so to fix the position of captions the
% following code is appropriate.
%\begin{LaTeXdemo}[code and float]
%  \begin{table}[ht]
%    \fbox{First float contents}
%    \caption{A caption below the float contents in the source.}
%  \end{table}
%  \floatsetup[table]{style=plain} 
%  \begin{table}[ht]
%    \fbox{Second float contents}
%    \caption{A second caption below the float contents in the source.}
%  \end{table}
%\end{LaTeXdemo}
% Using the \pkg{float} package, the same effect is achieved using:
%\begin{LaTeXdemo}[code only]
%  \begin{table}[ht]
%    \fbox{First float contents}
%    \caption{A caption below the float contents in the source.}
%  \end{table}
%  \floatstyle{plain}
%  \restylefloat{table}
%  \begin{table}[ht]
%    \fbox{Second float contents}
%    \caption{A second caption below the float contents in the source.}
%  \end{table}
%\end{LaTeXdemo}
%
%\section{A demonstration file\label{demo}}
%
% This is a simple demonstration file for using the \pkg{chemstyle}
% package. By using the \pkg{auto-pst-pdf} package, it is possible to
% use EPS graphics with pdf\LaTeX.
%    \begin{macrocode}
%<*demo>
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}            % Modern font encoding
\usepackage[runs=2]{auto-pst-pdf}   % Use EPS graphics with pdfLaTeX
\usepackage{booktabs}               % Better table layouts
\usepackage[journal=rsc]{chemstyle} % Of course!
\usepackage{geometry}               % Easy page layout
\usepackage{lmodern}                % Use Latin Modern fonts
\usepackage[version=3]{mhchem}      % Formula subscripts using \ce{}
\begin{document}
\end{document}
%</demo>
%    \end{macrocode}
%
%\StopEventually{^^A
%  \PrintChanges
%  \PrintIndex
%}
%
%\section{Implementation}
%
% A few support packages.
%    \begin{macrocode}
%<*package> 
\ProvidesPackage{chemstyle}
  [2013/07/03 v2.0m Schemes and style for chemistry]   
\RequirePackage{amstext,caption,chemscheme,xspace}
\SetupKeyvalOptions{
  family=cst,
  prefix=cst@
}
%    \end{macrocode}
%
% Users of the \pkg{achemso} class should not load \pkg{chemstyle}.
%    \begin{macrocode}
\@ifclassloaded{achemso}
  {
    \PackageWarning{chemstyle}
      {%
        The chemstyle package should not\MessageBreak
        be used with the achemso class:\MessageBreak
        loading chemstyle will abort%
      }
    \endinput
  }
  {}
%    \end{macrocode}
%    
%\begin{macro}{\cst@tempa}
% A temporary macro.
%    \begin{macrocode}
\newcommand*\cst@tempa{}
%    \end{macrocode}
%\end{macro}    
%    
%\begin{macro}{\ifcst@abbrcomma}
%\begin{macro}{\ifcst@abbremph}
%\begin{macro}{\ifcst@notesbefore}
%\begin{macro}{\ifcst@phrases}
%\begin{macro}{\ifcst@rademph}
%\begin{macro}{\ifcst@radhyphen}
%\begin{macro}{\ifcst@radpreix}
%\begin{macro}{\ifcst@radsuper}
%\begin{macro}{\ifcst@varioref}
%\begin{macro}{\ifcst@xspace}
% Some simple Boolean options.
%    \begin{macrocode}
\DeclareBoolOption[false]{abbrcomma}
\DeclareBoolOption[true]{abbremph}
\DeclareBoolOption[true]{notesbefore}
\DeclareBoolOption[true]{phrases}
\DeclareComplementaryOption{nophrases}{phrases}
\DeclareBoolOption[true]{rademph}
\DeclareBoolOption[true]{radhyphen}
\DeclareBoolOption[true]{radprefix}
\DeclareBoolOption[false]{radsuper}
\DeclareBoolOption[true]{varioref}
\DeclareBoolOption[true]{xspace}
%    \end{macrocode}
%\end{macro} 
%\end{macro} 
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@language}
%\begin{macro}{\cst@journal}
% Simple string options.
%    \begin{macrocode}
\DeclareStringOption{journal}
\DeclareDefaultOption{%
  \ifx\CurrentOptionValue\relax
    \edef\cst@journal{\CurrentOptionKey}%
  \else
    \PackageWarning{chemstyle}{%
      Unknown key option `\CurrentOptionKey'%
    }%
  \fi
}
\DeclareStringOption{language}
\setkeys{cst}{%
  journal  = ,
  language = english,
  varioref = true
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\ifcst@notes}
%\begin{macro}{\ifcst@autonotes}
%\begin{macro}{\cst@opt@auto}
%\begin{macro}{\cst@opt@notestrue}
%\begin{macro}{\cst@opt@notesfalse}
%\begin{macro}{\cst@opt@notesauto}
%\begin{macro}{\cst@opt@noteserror}
% For the \opt{notes} option, there are three possible values. Some of
% the internal code of \pkg{kvoptions} is borrowed and modified to keep
% things simple.
%    \begin{macrocode}
\newif\ifcst@notes
\newif\ifcst@autonotes
\newcommand*\cst@opt@auto{auto}
\define@key{cst}{notes}[true]{%
  \edef\KVO@param{#1}%
  \@onelevel@sanitize\KVO@param
  \ifx\KVO@param\KVO@true
    \expandafter\cst@opt@notestrue
  \else
    \ifx\KVO@param\KVO@false
      \expandafter\expandafter\expandafter\cst@opt@notesfalse
    \else
      \ifx\KVO@param\cst@opt@auto
        \expandafter\expandafter\expandafter\expandafter\expandafter
        \expandafter\expandafter\cst@opt@notesauto
      \else
        \expandafter\expandafter\expandafter\expandafter\expandafter
        \expandafter\expandafter\cst@opt@noteserror
      \fi
    \fi
  \fi
}
\newcommand*\cst@opt@notestrue{%
  \cst@notestrue
  \cst@autonotesfalse
}
\newcommand*\cst@opt@notesfalse{%
  \cst@notesfalse
  \cst@autonotesfalse
}
\newcommand*\cst@opt@notesauto{%
  \cst@notestrue
  \cst@autonotestrue
}
\newcommand*\cst@opt@noteserror{%
  \PackageWarning{chemstyle}{%
    Value `\KVO@param' is not supported by\MessageBreak
    option `notes'%
  }%
}
\DeclareComplementaryOption{nonotes}{notes}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%    
%\begin{macro}{\cstsetup}
% For allowing run-time changes.
%    \begin{macrocode}
\newcommand*\cstsetup{%
  \setkeys{cst}
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\cst@xspace}
% A re-usable \cs{xspace}-based macro.
%    \begin{macrocode}
\newcommand*\cst@xspace{%
  \ifcst@xspace
    \expandafter\xspace
  \fi
}
%    \end{macrocode}
%\end{macro}
%    
%\subsection{Extra units}
%
%\begin{macro}{\cmc}
%\begin{macro}{\Hz}
%\begin{macro}{\cubiccentimeter}
%\begin{macro}{\Molar}
%\begin{macro}{\molar}
%\begin{macro}{\mmHg}
%\begin{macro}{\mol}
%\changes{v2.0d}{2009/11/26}{Fix bug with \pkg{KOMA-Script}}
% The units are provided if necessary.  
%    \begin{macrocode}
\@ifpackageloaded{siunitx}{%
}{%
  \@ifpackageloaded{SIunits}{}{%
    \@ifpackageloaded{unitsdef}{}{%
      \IfFileExists{siunitx.sty}{%
        \RequirePackage{siunitx}
      }{%
        \IfFileExists{SIunits.sty}{%
          \RequirePackage{SIunits}
        }{%
          \PackageWarning{chemstyle}{%
            Could not find siunitx or SIunits package:\MessageBreak
            additional units not defined%         
          }
        }
      }
    }
  }
}
\@ifpackageloaded{siunitx}{%
  \sisetup{load-configurations = abbreviations}
  \DeclareSIUnit\cubiccentimeter{\cubic\centi\metre}
  \DeclareSIUnit\cmc{\cubic\centi\metre}
  \DeclareSIUnit\molar{\mole\per\cubic\deci\metre}
  \DeclareSIUnit\Molar{\textsc{m}}
  \DeclareSIUnit\torr{torr}
  \sisetup{load-configurations = abbreviations}
}{}
\@ifpackageloaded{SIunits}{%
  \newcommand*\cubiccentimeter{\centi\metre\cubed}
  \newcommand*\Molar{\textsc{m}}
  \newcommand*\molar{\mole\usk\deci\metre\rpcubed}
  \newcommand*\mmHg{\milli\metre Hg}
  \newcommand*\mol{\mole}
  \newcommand*\cmc{\cubiccentimeter}
  \newcommand*\Hz{\hertz}
}{%
  \@ifpackageloaded{unitsdef}{%
    \newunit{\cubiccentimeter}{\cm\unitsuperscript{3}}
    \newunit{\Molar}{\textsc{m}}
    \newunit{\molar}{\mole\unitsep\dm\unitsuperscript{--3}}
    \newunit{\mmHg}{mmHg}
    \newunit{\mol}{\mole}
    \newcommand*\cmc{\cubiccentimeter}
    \newcommand*\Hz{\hertz}
  }{}
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{Standard state symbol}
%
%\begin{macro}{\standardstate}
%\begin{macro}{\cst@standardstate}
%\begin{macro}{\cst@standardstate@aux}
% The \enquote{standard state} symbol is handy. This definition is adapted 
% from one posted several times to \texttt{comp.text.tex} by Donald 
% Arseneau.
%    \begin{macrocode}
\providecommand*\standardstate{%
  {%
    \ensuremath{\protect\cst@standardstate}%
  }%
}
\newcommand*\cst@standardstate{%
  \mathpalette\cst@standardstate@aux\circ
}
\newcommand*\cst@standardstate@aux[2]{%
  \ooalign{%
    \hfil
    $#1-$%
    \hfil
    \cr
    \hfil
    $#1#2$%
    \hfil
    \cr
  }%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{Latin phrases}
%
%\begin{macro}{\latin}
%\begin{macro}{\cst@latin}
%\begin{macro}{\latinemphon}
%\begin{macro}{\latinemphoff}
% A series of Latin phrases are provided, with a quick switch to
% print them in Roman letters if needed.  A mechanism is needed to
% alter the effect of the \cs{latin} command \emph{only} if the user
% does not have their own version.  This is achieved here, with
% precautions taken to ensure the user can define their own
% \cs{latin} command \emph{after} loading \pkg{chemstyle} and still have
% everything work properly.
%    \begin{macrocode}
\newcommand*\cst@latin{%
  \ifcst@abbremph
    \expandafter\emph
  \else
    \expandafter\@firstofone
  \fi
}
\newcommand*{\latinemphon}{%
  \cstsetup{abbremph=true}%
}
\newcommand*{\latinemphoff}{%
  \cstsetup{abbremph=false}%
}
\AtBeginDocument{%
  \providecommand*\latin{\cst@latin}%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@phrases@make}
%\begin{macro}{\eg}
%\begin{macro}{\etal}
%\begin{macro}{\etc}
%\begin{macro}{\ie}
%\begin{macro}{\invacuo}
% The outer functions for phrases are simple.
%    \begin{macrocode}
\newcommand*\cst@phrases@make{%
  \providecommand*\etal{%
    \cst@phrase{et~al}%
  }%
  \providecommand*\eg{%
    \cst@phrase@comma{e.g\spacefactor999\relax}%
  }%
  \providecommand*\etc{%
    \cst@phrase{etc}%
  }%
  \providecommand*\ie{%
    \cst@phrase@comma{i.e\spacefactor999\relax}%
  }%
  \providecommand*\invacuo{%
    \latin{in vacuo}%
    \cst@xspace
  }%
}
\AtBeginDocument{%
  \ifcst@phrases
    \expandafter\cst@phrases@make
  \fi
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% 
%\begin{macro}{\cst@phrase}
%\begin{macro}{\cst@phrase@comma}
% For phrases which never have a comma, life is easy. If there may be a
% comma to add, the flag is checked before proceeding.
%    \begin{macrocode}
\newcommand*\cst@phrase[1]{%
  \latin{#1}%
  \@ifnextchar.{}{%
    .%
    \cst@xspace
  }%
}
\newcommand*\cst@phrase@comma{%
  \ifcst@abbrcomma
    \expandafter\cst@phrase@with@comma
  \else
    \expandafter\cst@phrase
  \fi
}
%    \end{macrocode}
%\end{macro} 
%\end{macro}
%\begin{macro}{\cst@phrase@with@comma}
%\begin{macro}{\cst@phrase@with@comma@token}
%\begin{macro}{\cst@phrase@with@comma@aux@i}
%\begin{macro}{\cst@phrase@with@comma@aux@ii}
%\begin{macro}{\cst@phrase@with@comma@end}
%\begin{macro}{\cst@phrase@with@comma@next}
% If a comma is needed, the macros here search through the trailing 
% punctuation and gobble all of commas and full-stops. The appropriate
% punctuation is then added. Notice that the \cs{relax} here is 
% important, and that the test is category-code neural.
%    \begin{macrocode}
\newcommand*\cst@phrase@with@comma[1]{%
  \latin{#1}%
  \cst@phrase@with@comma@aux@i\relax
}
\newcommand*\cst@phrase@with@comma@token{}
\newcommand*\cst@phrase@with@comma@aux@i[1]{%
  \futurelet\cst@phrase@with@comma@token\cst@phrase@with@comma@aux@ii
}
\newcommand*\cst@phrase@with@comma@aux@ii{%
  \let\cst@phrase@with@comma@next\cst@phrase@with@comma@aux@i
  \if.\cst@phrase@with@comma@token\else
    \if,\cst@phrase@with@comma@token\else
      \let\cst@phrase@with@comma@next\cst@phrase@with@comma@end
    \fi
  \fi
  \cst@phrase@with@comma@next
}
\newcommand*\cst@phrase@with@comma@end{%
  .,%
  \cst@xspace
}
\newcommand*\cst@phrase@with@comma@next{}
%    \end{macrocode}
%\end{macro} 
%\end{macro} 
%\end{macro}
%\end{macro} 
%\end{macro}
%\end{macro}
%
%\subsection{Alkyl radicals}
%
%\begin{macro}{\cst@radical@make}
% The \cs{cst@radical@amke} macro does the hard work of declaring each
% abbreviation. The commands are made robust so they can (hopefully)
% be used anywhere.
%    \begin{macrocode}
\newcommand*\cst@radical@make[2]{%
  \expandafter\DeclareRobustCommand\expandafter*\csname #1#2\endcsname{%
    \text{\cst@radical{#1}{#2}}%
    \cst@xspace
  }%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\nPr}
%\begin{macro}{\iPr}
%\begin{macro}{\nBu}
%\begin{macro}{\iBu}
%\begin{macro}{\sBu}
%\begin{macro}{\tBu}
% With a mechanism in place, the abbreviations are declared.  The
% format of the resulting output will depend upon the configuration
% file used.
%    \begin{macrocode}
\cst@radical@make{n}{Pr}
\cst@radical@make{i}{Pr}
\cst@radical@make{n}{Bu}
\cst@radical@make{i}{Bu}
\cst@radical@make{s}{Bu}
\cst@radical@make{t}{Bu}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@radical@emph}
%\begin{macro}{\cst@radical@hyphen}
%\begin{macro}{\cst@radical@hyphen@false}
%\begin{macro}{\cst@radical@super}
% A few set up macros.
%    \begin{macrocode}
\newcommand*\cst@radical@emph{}
\newcommand*\cst@radical@hyphen{}
\newcommand*\cst@radical@hyphen@true{-}
\newcommand*\cst@radical@super{}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@radical}
%\begin{macro}{\cst@radical@pre}
%\begin{macro}{\cst@radical@post}
% The main body functions set everything up carefully, then actually
% prints things.
%    \begin{macrocode}
\newcommand*\cst@radical{%
  \let\cst@radical@emph\@firstofone
  \ifcst@rademph
    \let\cst@radical@emph\emph
  \fi
  \let\cst@radical@hyphen\relax
  \ifcst@radhyphen
    \let\cst@radical@hyphen\cst@radical@hyphen@true
  \fi
  \let\cst@radical@super\@firstofone
  \ifcst@radsuper
    \let\cst@radical@super\textsuperscript
  \fi
  \ifcst@radprefix
    \expandafter\cst@radical@pre
  \else
    \expandafter\cst@radical@post
  \fi
}
\newcommand*\cst@radical@pre[2]{%
  \cst@radical@super{%
    \cst@radical@emph{#1}%
  }%
  \cst@radical@hyphen
  #2%
}
\newcommand*\cst@radical@post[2]{%
  #2%
  \cst@radical@hyphen
  \cst@radical@super{%
    \cst@radical@emph{#1}%
  }%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Handling reference section naming}
%
%\begin{macro}{bibnote}
%\changes{v2.0h}{2010/04/13}{Only define bibnote counter if not done 
%  elsewhere}
% For the \opt{notes=auto} option, the \LaTeX\ counter \texttt{bibnote}
% needs to be defined even if \pkg{notes2bib} is not loaded.
%    \begin{macrocode}
\AtBeginDocument{\@ifundefined{c@bibnote}{\newcounter{bibnote}}{}}
%    \end{macrocode}
%\end{macro}
% 
%\begin{macro}{\cst@refsec@name}
%\begin{macro}{\cst@refsec@find}
%\begin{macro}{\cst@refsec@find@aux}
%\begin{macro}{\cst@refsec@set@name}
% A search for the references section: if this ends up empty then there
% is no section and later code will not do anything. This is used to
% disable the relevant code if \opt{notes=false} is set.
%    \begin{macrocode}
\newcommand*\cst@refsec@name{}
\newcommand*\cst@refsec@find[1]{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname #1\endcsname\relax
    \expandafter\cst@refsec@set@name
  \else
    \expandafter\@gobble
  \fi
  {#1}%
}
\newcommand*\cst@refsec@set@name[1]{%
  \def\cst@refsec@name{#1}%
}
\cst@refsec@find{bibname}%
\cst@refsec@find{refname}%
\ifx\cst@refsec@name\@empty
  \expandafter\cst@notesfalse
\fi
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@refsec@lang}
% \changes{v2.0m}{2013/07/03}{Add phrase translations for Italian}
%\begin{macro}{\cst@refsec@lang@clist}
%\begin{macro}{\cst@refsec@lang@define}
% The language-dependent definitions are created.
%    \begin{macrocode}
\newcommand*\cst@refsec@lang{}
\newcommand*\cst@refsec@lang@clist{}
\newcommand*\cst@refsec@lang@define[4]{%
  \ifx\cst@refsec@lang@clist\@empty
    \def\cst@refsec@lang@clist{#1}%
  \else
    \edef\cst@refsec@lang@clist{%
      \cst@refsec@lang@clist
      ,#1%
    }%
  \fi
  \@namedef{cst@refsec@lang@#1@references}{#2}%
  \@namedef{cst@refsec@lang@#1@and}{#3}%
  \@namedef{cst@refsec@lang@#1@notes}{#4}%
}
\cst@refsec@lang@define{english}{References}{and}{Notes}
\cst@refsec@lang@define{UKenglish}{References}{and}{Notes}
\cst@refsec@lang@define{ngerman}{Literatur}{und}{Notizen}
\cst@refsec@lang@define{german}{Literatur}{und}{Notizen}
\cst@refsec@lang@define{french}{R\'ef\'erences}{et}{Notes}
\cst@refsec@lang@define{frenchb}{R\'ef\'erences}{et}{Notes}
\cst@refsec@lang@define{italian}{Bibliografia}{e}{Note}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@refsec@set}
%\begin{macro}{\cst@refsec@set@biblatex}
%\begin{macro}{\cst@refsec@set@babel}
%\begin{macro}{\cst@refsec@set@language}
% The method for setting up the section heading depends on the 
% other packages in use. \pkg{biblatex} has its own system, and with
% \pkg{babel} there is also a mechanism to attach to.
%    \begin{macrocode}
\ifcst@notes
  \AtBeginDocument{\cst@refsec@set}
\fi
\newcommand*\cst@refsec@set{%
  \@ifpackageloded{biblatex}{%
    \@for\cst@refsec@lang:=\cst@refsec@lang@clist\do{%
      \cst@refsec@set@biblatex\cst@refsec@lang
    }%
  }{%
    \@ifpackageloded{babel}{%
      \@for\cst@refsec@lang:=\cst@refsec@lang@clist\do{%
        \cst@refsec@set@babel\cst@refsec@lang
      }%
      \expandafter\selectlanguage\expandafter{\languagename}%
    }{%
      \@for\cst@refsec@lang:=\cst@refsec@lang@clist\do{%
        \cst@refsec@set@language\cst@refsec@lang
      }%
    }%
  }
}
\newcommand*\cst@refsec@set@biblatex[1]{%
  \edef\cst@tempa{%
    \noexpand\csgappto{bib@strings@#1}{%
      \noexpand\def\expandafter\noexpand
        \csname\cst@refsec@name\endcsname{%
        \noexpand\cst@refsec@make@name{#1}%
      }%
    }%
  }%
  \cst@tempa
}
\newcommand*\cst@refsec@set@babel[1]{%
  \edef\cst@tempa{%
    \noexpand\addto{\expandafter\noexpand\csname captions#1\endcsname}{%
      \noexpand\def\expandafter\noexpand
        \csname\cst@refsec@name\endcsname{%
        \noexpand\cst@refsec@make@name{#1}%
      }%
    }%
  }%
  \cst@tempa
}
\newcommand*\cst@refsec@set@language[1]{%
  \ifx#1\cst@language
    \edef\cst@tempa{%
      \noexpand\def\expandafter\noexpand
        \csname\cst@refsec@name\endcsname{%
        \noexpand\cst@refsec@make@name{#1}%
      }%
    }%
    \cst@tempa
  \fi
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%    
%\begin{macro}{\cst@refsec@make@name}
%\begin{macro}{\cst@refsec@make@name@fixed}
%\begin{macro}{\cst@refsec@make@name@auto}
%\begin{macro}{\cst@refsec@make@name@nonotes}
% Actually making the name is pretty easy: the only complexity is
% the possibility of automation.
%    \begin{macrocode}
\newcommand*\cst@refsec@make@name@fixed[1]{%
  \ifcst@notesbefore
    \@nameuse{cst@refsec@lang@#1@notes}
    \@nameuse{cst@refsec@lang@#1@and}
    \@nameuse{cst@refsec@lang@#1@references}%
  \else
    \@nameuse{cst@refsec@lang@#1@references}
    \@nameuse{cst@refsec@lang@#1@and}
    \@nameuse{cst@refsec@lang@#1@notes}%
  \fi
}
\newcommand*\cst@refsec@make@name@auto{%
  \ifnum\the\value{bibnote}>\z@\relax
    \expandafter\cst@refsec@make@name@fixed
  \else
    \expandafter\cst@refsec@make@name@nonotes
  \fi
}
\newcommand*\cst@refsec@make@name@nonotes[1]{%
  \@nameuse{cst@refsec@lang@#1@references}%
}
\let\cst@refsec@make@name\cst@refsec@make@name@fixed
\ifcst@notes
  \ifcst@autonotes
    \let\cst@refsec@make@name\cst@refsec@make@name@auto
  \fi
\fi
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% With everything set up, options can be processed.
%    \begin{macrocode}
\ProcessKeyvalOptions{cst}
%    \end{macrocode}
%    
%\subsection{Cross-references}
%
% The naming for cross-references is sorted out properly using the
% \pkg{varioref} package. Schemes are done at the start of the document
% as the definition of \cs{schemename} may not exist yet.
%    \begin{macrocode}
\ifcst@varioref
  \RequirePackage{varioref}
  \labelformat{figure}{\figurename~#1}
  \labelformat{table}{\tablename~#1}
  \AtEndOfPackage{%
    \AtBeginDocument{%
      \labelformat{scheme}{\schemename~#1}%
    }%
  }
\fi
%    \end{macrocode}
%    
%\subsection{Float formatting}
%
%\begin{macro}{\cst@float@memoir@correct}
% Floats are now re-formatted, using the tools provided by either
% \pkg{float} or \pkg{floatrow}. First, a check to make sure that
% \pkg{chemscheme} was not loaded with the \opt{memoir} option. The
% checks there mean that this is only possible if neither \pkg{floatrow}
% nor \pkg{float} are already loaded.
%    \begin{macrocode}
\newcommand*\cst@float@memoir@correct{%
  \let\newfloat\@undefined
}
\ifx\cst@float@pkg\cst@opt@memoir
  \expandafter\cst@float@memoir@correct
\fi
\cst@float@load
\cst@float@execute{\@nameuse{cst@float@make@\cst@float@pkg}}
%    \end{macrocode} 
%\end{macro} 
%
% With that done, the package can safely re-define appearance.
%    \begin{macrocode}
\@ifpackageloaded{floatrow}{%
  \floatsetup{objectset=centering}
  \floatplacement{figure}{htbp}
  \floatplacement{scheme}{htbp}
  \floatplacement{table}{htbp}
  \floatsetup[table]{style=plaintop}
}{%
  \floatstyle{plaintop}
  \restylefloat{table}
  \floatstyle{plain}
  \restylefloat{figure}
  \floatplacement{table}{htbp}
  \floatplacement{figure}{htbp}
  \AtBeginDocument{%
    \restylefloat{scheme}
    \floatplacement{scheme}{htbp}
  }
}
%    \end{macrocode}
%    
%\subsection{Loading the style definition}
%
% The style definition is loaded here, once everything necessary is
% in place. 
%    \begin{macrocode}
\ifx\cst@journal\@empty\else
  \InputIfFileExists{\cst@journal.chemstyle.cfg}{%
    \setkeys{cst}{
      abbrcomma   = false,
      abbremph    = true,
      notesbefore = true,
      rademph     = true,
      radhyphen   = true,
      radprefix   = true,
      radsuper    = false,
    }
  }{%
    \PackageWarning{chemstyle}{%
      Requested style `\cst@journal' does not exist\MessageBreak
    }
  }
\fi
%    \end{macrocode}
%
% All done for \pkg{chemstyle}. 
%    \begin{macrocode}
\cst@ref@load
%</package> 
%    \end{macrocode}  
%
%\subsection{The \pkg{chemscheme} package}
%
%\subsubsection{Making new floats}
% 
% The code for making floats is stored in the \pkg{chemscheme} package:
% in this way there should be no issues with loading things in any 
% order.
%    \begin{macrocode}
%<*chemscheme>
\ProvidesPackage{chemscheme}
  [2013/07/03 v2.0m Schemes for chemistry] 
\RequirePackage{kvoptions,psfrag}
\SetupKeyvalOptions{
  family=cst,
  prefix=cst@
}
%    \end{macrocode}
%
% There is a lot of confusion about XeTeX: hopefully a warning will
% sort this.    
%    \begin{macrocode}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname XeTeXrevision\endcsname\relax
\else
  \PackageWarning{chemscheme}
    {XeTeX in use: \string\schemeref\space will not work}
\fi
%    \end{macrocode}
%    
% Users of the \pkg{achemso} class should not load \pkg{chemscheme}.
%    \begin{macrocode}
\@ifclassloaded{achemso}
  {
    \PackageWarning{chemscheme}
      {%
        The chemscheme package should not\MessageBreak
        be used with the achemso class:\MessageBreak
        loading chemscheme will abort%
      }
    \endinput
  }
  {}
%    \end{macrocode}
% 
%\begin{macro}{\ifcst@floatrow} 
%\begin{macro}{\ifcst@chemcompounds} 
% Some simple Boolean options.
%    \begin{macrocode}
\DeclareBoolOption[true]{chemcompounds}
\DeclareComplementaryOption{bpchem}{chemcompounds}
\DeclareBoolOption[true]{floatrow}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@opt@bpchem}
%\begin{macro}{\cst@opt@chemcompounds}
%\begin{macro}{\cst@opt@ref@error}
% The \opt{tracking} option has two possible values.
%    \begin{macrocode}
\define@key{cst}{tracking}[chemcompounds]{%
  \edef\KVO@param{#1}%
  \@onelevel@sanitize\KVO@param
  \ifx\KVO@param\cst@opt@bpchem
    \expandafter\cst@chemcompoundsfalse
  \else
    \ifx\KVO@param\cst@opt@chemcompounds
      \expandafter\expandafter\expandafter\cst@chemcompoundstrue
    \else
      \expandafter\expandafter\expandafter\cst@opt@ref@error
    \fi
  \fi
}
\newcommand*\cst@opt@bpchem{bpchem}
\@onelevel@sanitize\cst@opt@bpchem
\newcommand*\cst@opt@chemcompounds{chemcompounds}
\@onelevel@sanitize\cst@opt@chemcompounds
\newcommand*\cst@opt@ref@error{%
  \PackageWarning{chemscheme}{%
    Value `\KVO@param' is not supported by\MessageBreak
    option `tracking'%
  }%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\ifcst@memoir}
%\begin{macro}{\cst@opt@float}
%\begin{macro}{\cst@opt@floatrow}
%\begin{macro}{\cst@opt@memoir}
%\begin{macro}{\cst@opt@floats@error}
% For \opt{floats}, the number of choices is slightly higher.
%    \begin{macrocode}
\newif\ifcst@memoir
\define@key{cst}{floats}{%
  \edef\KVO@param{#1}%
  \cst@floatrowtrue
  \cst@memoirfalse
  \ifx\KVO@param\cst@opt@float
    \expandafter\cst@floatrowfalse
  \else
    \ifx\KVO@param\cst@opt@floatrow\else
      \ifx\KVO@param\cst@opt@memoir
        \expandafter\expandafter\expandafter\expandafter
        \expandafter\expandafter\expandafter\cst@memoirtrue
      \else        
        \expandafter\expandafter\expandafter\expandafter
        \expandafter\expandafter\expandafter\cst@opt@floats@error
      \fi
    \fi
  \fi
}
\newcommand*\cst@opt@float{float}
\newcommand*\cst@opt@floatrow{floatrow}
\newcommand*\cst@opt@memoir{memoir}
\newcommand*\cst@opt@floats@error{%
  \PackageWarning{chemscheme}{%
    Value `\KVO@param' is not supported by\MessageBreak
    option `floats'%
  }%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{environment}{scheme}
%\begin{macro}{\cst@float@pkg}
%\begin{macro}{\cst@float@execute}
%\begin{macro}{\cst@float@load}
%\begin{macro}{\cst@float@load@float}
%\begin{macro}{\cst@float@load@floatrow}
% With options processed, the appropriate packages can be loaded as
% necessary. The are some checks so that only one package is tried. 
%    \begin{macrocode}
\newcommand*\cst@float@pkg{}
\newcommand*\cst@float@execute{}
\newcommand*\cst@float@load{%
  \IfFileExists{floatrow.sty}{}{%
    \ifcst@floatrow
      \expandafter\cst@floatrowfalse
    \fi
  }%
  \ifcst@floatrow
    \expandafter\cst@float@load@floatrow
  \else
    \expandafter\cst@float@load@float
  \fi
}
\newcommand*\cst@float@load@float{%
  \RequirePackage{float}
  \def\cst@float@pkg{float}
  \def\cst@float@execute{\AtBeginDocument}
}
\newcommand*\cst@float@load@floatrow{%
  \RequirePackage{floatrow}
  \def\cst@float@pkg{floatrow}
  \def\cst@float@execute{\@firstofone}
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@float@chapter}
%\begin{macro}{\cst@float@chapter@hook}
% A method to add to the \cs{@chapter} macro is needed.  This is
% not compatible with \cs{g@addto@macro} directly, so a more
% complex method is used by providing a suitable hook.
%    \begin{macrocode}
\newcommand*\cst@float@chapter@hook{}
\newcommand*\cst@float@chapter{}
\ifx\@chapter\@undefined\else
  \let\cst@float@chapter\@chapter
  \def\@chapter{%
    \cst@float@chapter@hook
    \cst@float@chapter
  }
\fi
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@float@chapter@fix}
% So that floats inside chapters work correctly.
%    \begin{macrocode}
\newcommand*\cst@float@chapter@fix{%
  \g@addto@macro{\cst@float@chapter@hook}{%
    \addtocontents{los}{\protect\addvspace{10\p@}}%
  }%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname KOMAScriptVersion\endcsname\relax
    \@namedef{thescheme}{%
      \ifnum\c@chapter>\z@\relax
        \thechapter.%
      \fi 
      \arabic{scheme}%
    }%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\cst@float@make@float}
% When using \pkg{float}, definition depends on the existence of
% chapters. The name and \enquote{list of} macros are then created separately.
%    \begin{macrocode}
\newcommand*\cst@float@make@float{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname chapter\endcsname\relax
    \newfloat{scheme}{tbp}{los}%
  \else
    \newfloat{scheme}{tbp}{los}[chapter]%
    \expandafter\cst@float@chapter@fix
  \fi
  \floatname{scheme}{\schemename}%
  \newcommand*\listofschemes{%
    \listof{scheme}{\listschemename}%
  }%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\cst@float@make@floatrow}
% For \pkg{floatrow}, the interface to everything is rather simple.
%    \begin{macrocode}
\newcommand*\cst@float@make@floatrow{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname chapter\endcsname\relax
    \DeclareNewFloatType{scheme}{%
      fileext   = los,
      placement = tbp,
      name      = Scheme
    }%
  \else
    \DeclareNewFloatType{scheme}{%
      fileext   = los,
      placement = tbp,
      name      = Scheme, 
      within    = chapter
    }%
    \cst@float@chapter@fix
  \fi
  \newcommand*\listofschemes{%
    \listof{scheme}{\listschemename}%
  }%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\cst@float@make@memoir}
% \pkg{memoir} has a lot of things to set up for a float. This list is
% essentially the same as the \pkg{memoir} kernel uses.
%    \begin{macrocode}
\newcommand*\cst@float@make@memoir{%
  \newfloat[chapter]{scheme}{los}{\schemename}%
  \newlistof{listofschemes}{los}{\listschemename}%
  \addtodef{\@smemfront}{}{\counterwithout{scheme}{chapter}}%
  \addtodef{\@smemmain}{}{%
    \ifartopt\else
      \counterwithin{scheme}{chapter}%
    \fi
  }%
  \addtodef{\backmatter}{}{%
    \ifartopt\else
      \counterwithout{scheme}{chapter}%
      \setcounter{scheme}{0}%
    \fi
  }%
  \newlistentry[chapter]{scheme}{los}{0}%
  \cftsetindents{scheme}{0em}{2.3em}%
  \addtodef{\insertchapterspace}{}{%
    \addtocontents{los}{\protect\addvspace{10pt}}%
  }%
  \ifartopt
    \counterwithout{scheme}{chapter}%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
% Options are set.
%    \begin{macrocode}
\ProcessKeyvalOptions{cst}
%    \end{macrocode}
%    
% Everything is set up, and so the support can finally be loaded.
%    \begin{macrocode}
\@ifpackageloaded{floatrow}{%
  \def\cst@float@pkg{floatrow}
  \def\cst@float@execute{\@firstofone}
}{%
  \@ifpackageloaded{float}{%
    \def\cst@float@pkg{float}
    \def\cst@float@execute{\AtBeginDocument}
  }{%
    \@ifclassloaded{memoir}{%
      \def\cst@float@pkg{memoir}
      \def\cst@float@execute{\AtBeginDocument}
    }{%
      \@ifpackageloaded{chemstyle}{}{%
        \cst@float@load
      }%
    }%
  }%
}
%    \end{macrocode}
%\changes{v2.0b}{2009/10/26}{logic for undefining \cs{newfloat} 
%  corrected}
% If \pkg{memoir} is in use, delete the \cs{newfloat} macro.
%    \begin{macrocode}
\ifx\cst@float@pkg\cst@opt@memoir
  \let\newfloat\@undefined
\fi
\@ifpackageloaded{chemstyle}{}{%
  \cst@float@execute{\@nameuse{cst@float@make@\cst@float@pkg}}
}
%    \end{macrocode}
%\end{environment}
%    
%\subsubsection{Supporting \pkg{babel} for schemes}
%
%\begin{macro}{\schemename}
%\begin{macro}{\listschemename}
% To start, the names in English.
%    \begin{macrocode}
\@ifpackageloaded{floatrow}{}{%
  \newcommand*\schemename{Scheme}
}
\newcommand*\listschemename{List of Schemes}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\changes{v2.0j}{2010/11/04}{Include \texttt{ngerman} in \pkg{babel}
%  support}
% \changes{v2.0m}{2013/07/03}{Add phrase translations for Italian}
% Some simple label changes.
%    \begin{macrocode}
\AtBeginDocument{%
  \@ifpackageloaded{babel}{%
    \addto{\captionsfrench}{%
      \def\listschemename{Table des sch\`emes}%
      \def\schemename{{\scshape Sch\`eme}}%
    }%
    \addto{\captionsgerman}{%
      \def\listschemename{Schemenverzeichnis}%
      \def\schemename{Schema}%
    }%
    \addto{\captionsngerman}{%
      \def\listschemename{Schemenverzeichnis}%
      \def\schemename{Schema}%
    }%
    \addto{\captionsitalian}{%
      \def\listschemename{Lista degli schemi}%
      \def\schemename{Schema}%
    }%
    \expandafter\selectlanguage\expandafter{\languagename}%
  }{}%
}
%    \end{macrocode}
%    
%\subsubsection{Positioning float contents}
%
%\begin{macro}{\floatcontentscentre}
%\begin{macro}{\floatcontentscenter}
%\begin{macro}{\floatcontentsleft}
%\begin{macro}{\floatcontentsright}
% When using \pkg{floatrow}, centring all floats is easy.  This is
% not the case for other methods, and so some macros are provided.
% The definitions depend on whether \pkg{floatrow} is in use.
%    \begin{macrocode}
\@ifpackageloaded{floatrow}{%
  \newcommand*\floatcontentscentre{%
    \floatsetup{objectset=centering}%
  }
  \newcommand*\floatcontentscenter{%
    \floatsetup{objectset=centering}%
  }
  \newcommand*\floatcontentsright{%
    \floatsetup{objectset=raggedleft}%
  }
  \newcommand*\floatcontentsleft{%
    \floatsetup{objectset=raggedright}%
  }
}{%
%    \end{macrocode}
%\begin{macro}{\cst@floatboxreset}
%\begin{macro}{\@floatboxreset}
%\begin{macro}{\cst@everyfloat}
% When \pkg{floatrow} is not in use, then a low-level hack of
% \cs{@floatboxtreset} is used.
%    \begin{macrocode}
  \newcommand*\cst@floatboxreset{}
  \newcommand*\cst@everyfloat{}
  \let\cst@floatboxreset\@floatboxreset
  \def\@floatboxreset{%
    \cst@everyfloat
    \cst@floatboxreset
  }
  \newcommand*{\floatcontentscentre}{%
    \let\cst@everyfloat\centering
  }
  \newcommand*{\floatcontentscenter}{%
    \let\cst@everyfloat\centering
  }
  \newcommand*{\floatcontentsleft}{%
    \let\cst@everyfloat\relax
  }
  \newcommand*{\floatcontentsright}{%
    \let\cst@everyfloat\raggedleft
  }
}
\floatcontentsleft
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsubsection{Reference numbers in graphics}
%
%\begin{macro}{\schemerefmarker}
%\begin{macro}{\schemerefformat}
% The two macros \cs{schemerefmarker} and \cs{schemerefformat}
% are used to allow customisation of the behaviour of the package.
% Here defaults are provided.
%    \begin{macrocode}
\newcommand*\schemerefmarker{TMP}
\newcommand*\schemerefformat{\textsf}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\cst@ref@count}
% The automatic numbering system needs a counter.
%    \begin{macrocode}
\newcount\cst@ref@count
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\cst@ref@label}
%\begin{macro}{\cst@ref@load}
% The loading of support packages is set up as a macro, so that it can
% be delayed when \pkg{chemstyle} is in use.
%    \begin{macrocode}
\newcommand*\cst@ref@label{}
\newcommand*\cst@ref@load{%
  \ifcst@chemcompounds
    \RequirePackage{chemcompounds}
    \let\cst@ref@label\compound
  \else
    \RequirePackage{bpchem}
    \let\cst@ref@label\CNlabel
  \fi
}
\@ifpackageloaded{chemstyle}{}{%
  \cst@ref@load
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\schemeref}
%\begin{macro}{\chemschemeref}
% The main function is quite simple: just set up the substitution then
% hand over to \pkg{psfrag}. There is also some back-compatibility code
% for early versions of the package.
%    \begin{macrocode}
\DeclareRobustCommand*\schemeref[2]
  [\schemerefmarker\the\cst@ref@count]{%
  \advance\cst@ref@count\@ne\relax
  \psfrag{#1}[b][b]{%
    \schemerefformat{\cst@ref@label{#2}}%
  }%
}
\DeclareRobustCommand*\chemschemeref[1]{%
  \schemeref[#1]%
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\schemerefsub}
%\begin{macro}{\chemschemerefsub}
%\begin{macro}{\cst@ref@check@sub}
% Sub-referencing is only available with \pkg{bpchem}: other than that,
% very similar to above.
%    \begin{macrocode}
\DeclareRobustCommand*\schemerefsub[3]
  [\schemerefmarker\the\cst@ref@count]{%
  \advance\cst@ref@count\@ne\relax
  \psfrag{#1}[b][b]{%
    \schemerefformat{\CNlabelsub{#2}{#3}}%
  }%
}
\DeclareRobustCommand*\chemschemerefsub[1]{%
  \schemerefsub[#1]%
}
\newcommand*\cst@ref@check@sub{%
  \@ifpackageloaded{bpchem}{}{%
    \def\schemerefsub[3][]{%
      \PackageWarning{chemscheme}{%
        \string\schemerefsub\space not available unless bpchem
        \MessageBreak package is loaded
      }%
    }%
  }%
}
\AtBeginDocument{\cst@ref@check@sub}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
% That ends the \pkg{chemscheme} package.
%    \begin{macrocode}
%</chemscheme>
%    \end{macrocode}
%    
%\subsection{Journal definition files}
%
% The journal files are all rather similar. They set a series of keys
% and perhaps make other changes.
% 
%\subsubsection{\emph{Angew.\ Chem.}\ style}
%
%    \begin{macrocode}
%<*angew>    
\ProvidesFile{angew.chemstyle.cfg}
  [2013/07/03 v2.0m Angew. Chem. journal style]
\setkeys{cst}{
  abbremph  = false,
  radhyphen = false
}
\captionsetup{
  font            = sf,
  labelfont       = {bf,it},
  labelsep        = period,
  singlelinecheck = off
}
\captionsetup[table]{
  labelsep = colon
}
%</angew>
%    \end{macrocode}
%    
%\subsubsection{\emph{Inorg.\ Chem.}\ style}
%
%    \begin{macrocode}
%<*ic>    
\ProvidesFile{ic.chemstyle.cfg}
  [2013/07/03 v2.0m Inorg. Chem. journal style]
\DeclareCaptionLabelSeparator{perquad}{.\quad}
\captionsetup{
  labelfont       = {bf,it,sf},
  labelsep        = perquad,
  singlelinecheck = off
  textfont        = rm
}
\captionsetup[figure]{
  textfont = rm
}
\setkeys{cst}{
  abbrcomma   = true,
  abbremph    = false,
  notesbefore = false,
  radhyphen   = false,
  radsuper    = true
}
\@ifpackageloaded{floatrow}{%
  \floatsetup[scheme]{style=plaintop}
}{%
  \floatstyle{plaintype}
  \restylefloat{scheme}
  \floatstyle{plain}
}
%</ic>
%    \end{macrocode}
%    
%\subsubsection{\emph{J.~Am.\ Chem.\ Soc.}\ style}
%\changes{v2.0e}{2009/12/28}{Added missing comma after 
%  \texttt{singlelinecheck = off}}
%
%    \begin{macrocode}
%<*jacs>    
\ProvidesFile{jacs.chemstyle.cfg}
  [2013/07/03 v2.0m J. Am. Chem. Soc. journal style]
\DeclareCaptionLabelSeparator{perquad}{.\quad}
\captionsetup{
  labelfont       = {bf,it,sf},
  labelsep        = perquad,
  singlelinecheck = off,
  textfont        = sf
}
\captionsetup[figure]{
  textfont = rm
}
\setkeys{cst}{
  abbrcomma   = true,
  abbremph    = false,
  notesbefore = false,
  radhyphen   = false,
  radsuper    = true
}
\@ifpackageloaded{floatrow}{%
  \floatsetup[scheme]{style=plaintop}
}{%
  \floatstyle{plaintype}
  \restylefloat{scheme}
  \floatstyle{plain}
}
%</jacs>
%    \end{macrocode}
%    
%\subsubsection{\emph{J.~Organomet.\ Chem.}\ style}
%
%    \begin{macrocode}
%<*jomc>    
\ProvidesFile{jomc.chemstyle.cfg}
  [2013/07/03 v2.0m J. Organomet. Chem. journal style]
\setkeys{cst}{
  abbremph  = false,
  radhyphen = true,
  radsuper  = true,
}
\captionsetup{
  labelsep        = period,
}
\captionsetup[table]{
  labelsep        = newline,
  singlelinecheck = off
}
\AtBeginDocument{%
  \def\figurename{Fig.}%
}
%</jomc>
%    \end{macrocode}
%    
%\subsubsection{\emph{J.~Phys.\ Chem.}\ style}
%
%    \begin{macrocode}
%<*jpc>    
\ProvidesFile{jpc.chemstyle.cfg}
  [2013/07/03 v2.0m J. Phys. Chem. journal style]
\DeclareCaptionFormat{labelcaps}{\MakeUppercase{#1}#2#3}
\captionsetup{
  font            = bf,
  format          = labelcaps,
  labelsep        = colon,
  singlelinecheck = off
}
\captionsetup[figure]{
  format   = plain,
  labelsep = period,
  textfont = md
}
\setkeys{cst}{
  abbrcomma   = true,
  abbremph    = false,
  notesbefore = false,
  radhyphen   = false
}
\@ifpackageloaded{floatrow}{%
  \floatsetup[scheme]{style=plaintop}
}{%
  \floatstyle{plaintype}
  \restylefloat{scheme}
  \floatstyle{plain}
}
%</jpc>
%    \end{macrocode}
%  
%\subsection{\emph{Org.\ Lett.}\ style}  
%
%    \begin{macrocode}
%<*orglett>    
\ProvidesFile{orglett.chemstyle.cfg}
  [2013/07/03 v2.0m Org. Lett. journal style]
\DeclareCaptionLabelSeparator{perquad}{.\quad}
\captionsetup{
  labelfont       = bf,
  labelsep        = perquad
}
\setkeys{cst}{
  abbrcomma   = true,
  abbremph    = false,
  notesbefore = false,
  radhyphen   = false,
  radsuper    = true
}
%    \end{macrocode}
% The \emph{Org.\ Lett.}\ style is a it more complicated than all of
% the others as the float formatting is much more complicated. First,
% colour support is needed.
%    \begin{macrocode}
\RequirePackage{xcolor}
%    \end{macrocode}
%\begin{macro}{\fs@orglett}
%\begin{macro}{\fs@orglettfig}
% For \pkg{float}, some new styles based on the supplied \texttt{ruled}
% one.
%    \begin{macrocode}
\newcommand*\fs@orglett{%
  \def\@fs@cfont{\bfseries}%
  \let\@fs@capt\floatc@ruled
  \def\@fs@pre{%
    \begingroup
      \color{purple}%                     
      \hrule height 12pt depth 0pt\relax 
      \kern 2pt\relax
    \endgroup
  }%
  \def\@fs@mid{%
    \vspace\belowcaptionskip\relax      
  }%
  \def\@fs@post{%
    \begingroup
      \color{purple}%
      \kern 2pt\relax                     
      \hrule height 1.5pt depth 0pt\relax 
    \endgroup
  }%
  \let\@fs@iftopcapt\iftrue
}
\newcommand*\fs@orglettfig{%
  \def\@fs@cfont{\bfseries}%
  \let\@fs@capt\floatc@plain
  \def\@fs@pre{%
    \begingroup
      \color{purple}%
      \hrule height 12pt depth 0pt\relax
      \kern 2pt\relax
    \endgroup
  }%
  \def\@fs@mid{%
    \vspace\abovecaptionskip\relax
  }%
  \def\@fs@post{%
    \begingroup
      \color{purple}%
      \kern 2pt\relax
      \hrule height1.5pt depth 0pt\relax
  \endgroup
  }%
  \let\@fs@iftopcapt\iffalse
}
%    \end{macrocode}
%\end{macro}  
%\end{macro} 
%
%    \begin{macrocode}
\DeclareFloatVCode{orglettthickrule}{%
  \par
  \begingroup
    \color{purple}%
    \hrule height 12pt depth 0pt\relax
    \vskip 2pt\relax
  \endgroup
  \par
}
\DeclareFloatVCode{orglettlowrule}{%
  \par
  \begingroup
    \vskip 2pt\relax
    \hrule height 1.5pt depth 0pt\relax
  \endgroup
  \par
}
%    \end{macrocode}
% With that done, things can be applied. 
%    \begin{macrocode}
\@ifpackageloaded{floatrow}{%
  \floatsetup{
    capposition  = top,
    heightadjust = all,
    postcode     = orglettlowrule,
    precode      = orglettthickrule,
    midcode      = rule,
  }
  \floatsetup[figure]{
    capposition  = bottom,
    heightadjust = all,
    postcode     = orglettlowrule,
    precode      = orglettthickrule,
    midcode      = rule,
  }
}{%
  \floatstyle{orglettfig}
  \restylefloat{figure}
  \floatstyle{orglett}
  \restylefloat{scheme}
  \restylefloat{table}
}
%</orglett>
%    \end{macrocode}
%
%\subsubsection{Royal Society of Chemistry style}
%
%    \begin{macrocode}
%<*rsc>    
\ProvidesFile{rsc.chemstyle.cfg}
  [2013/07/03 v2.0m RSC journal style]
\captionsetup{
  labelsep  = quad,
  labelfont = bf
}
\AtBeginDocument{%
  \def\figurename{Fig.}%
}
%</rsc>
%    \end{macrocode}
%    
%\subsubsection{\emph{Tetrahedron Lett.}\ style}
%
%    \begin{macrocode}
%<*tetlett>    
\ProvidesFile{tetlett.chemstyle.cfg}
  [2013/07/03 v2.0m Tetrahedron Lett. journal style]
\captionsetup{
  labelsep        = period,
  labelfont       = bf,
  singlelinecheck = off
}
\setkeys{cst}{
  abbrcomma = true,
  abbremph  = false,
}
%</tetlett>
%    \end{macrocode}
% 
%\Finale
%
%\iffalse
%<*demo>
%</demo>
%<*scheme>
%!PS-Adobe-2.0 EPSF-1.2
%%Creator: ChemDraw Std(tm) 10.0
%<!labels>%%Title: scheme-one.eps
%<labels>%%Title: scheme-two.eps
%%CreationDate: 21/07/2007 12:00
%%DocumentSuppliedProcSets: chemdict30 24 13
%%DocumentFonts: Helvetica Helvetica-Oblique
%%BoundingBox: 30 78 288 144
%%EndComments
%%BeginProcSet: chemdict30 24 13
% ChemDraw Laser Prep
% Copyright � 1985-2005 CambridgeSoft Corp., All Rights Reserved
userdict/chemdict30 210 dict put
chemdict30 begin/version 24 def/sv 13 def
/b{bind def}bind def/L{load def}b/R{null def}b/d/def L/a/add L/al/aload L
/as/astore L/at/atan L/cp/closepath L/cv/curveto L/cw/currentlinewidth L
/cpt/currentpoint L/dv/div L/D/dup L/e/exch L/F/false L/f/fill L/fa/forall L
/g/get L/gi/getinterval L/gr/grestore L/gs/gsave L/ie/ifelse L/ix/index L
/l/lineto L/mt/matrix L/M/moveto L/m/mul L/n/neg L/np/newpath L/pb/pathbbox L
/P/pop L/r/roll L/rl/rlineto L/rm/rmoveto L/ro/rotate L/rp/repeat L
/ru/round L/sc/scale L/sl/setlinewidth L/sm/setmatrix L/st/stroke L
/sp/strokepath L/sq/sqrt L/s/sub L/T/true L/tr/transform L/xl/translate L
/xc/exec L/A R/N R/St R/X R/Y R/aL R/bL R/bS R/bd R/bs R/cX R/cY R/ch R/co R
/fB R/fI R/fS R/fZ R/fl R/ft R/iX R/iY R/idx R/lh R/llx R/lly R/lp R/nH R
/nSq R/newdict R/ps R/rad R/rev R/sL R/sba R/sbl R/sbs R/sn R/spa R/tB R
/typ R/urx R/ury R/w R/wF R/xX R/xY R/rBg R/gBg R/bBg R/gry R/rDst R/gDst R
/bDst R/cpd R/Aeq R/Ath R/Aos R/Ach R/ed R/sf 20 d/cW 20 d/lW 20 d/bW 75 d
/wF 1.5 d/aF 11.875 d/aR 0.263 d/aA 50 d/hS 54 d/pA 32 d/sh F d/S{sf m}b
/dL{[hS] 0 setdash}b/o{1 ix}b/rot{3 -1 r}b/x{e d}b/CMT mt d/TM mt d
/SM{CMT sm}b/XY{X D m Y D m a sq}b/s1 1 string d/fp{T charpath flattenpath}b
/p{tr ru 0.25 a e ru 0.25 a e itransform}b/Wd{65536. dv}b
/C{Wd rot Wd rot Wd rot setrgbcolor}b
/setcmykcolor where{P/sk/setcmykcolor L}{/sk{4 1 r 3{3 ix a D 0 lt{P 0}if D 1\
 gt{P 1}if 1 e s 3 1 r}rp setrgbcolor P}b}ie/sg{D currenthsbcolor P rot seths\
bcolor currenthsbcolor e P e P o s D m .001 gt{setgray}{P}ie}b
/sBg{65535 dv/bBg x 65535 dv/gBg x 65535 dv/rBg
x}b
/sRmp{currentrgbcolor bBg e s/bDst x gBg e s/gDst x rBg e s/rDst x}b
/dD{np 2 1 r 4 2 r xl 2 dv D sc -1 0 M 0 -1 l 1 0 l 0 1 l cp SM 0 ne{f}{lW 0.\
8 m sl st}ie}b
/dM{gs np 3 1 r xl D sc 0 4 M 0 -8 rl 3.5 2 rm -7 4 rl 0 -4 rm 7 4 rl SM st g\
r}b/dQ{gs np 0 360 arc 0.5 sg f gr}b
/dR{lW 0.8 m sl 2 ix s/Y x 2 ix s/X x xl Rr SM st}b
/dT{fp pb 3 1 r s 3 2 r s 2 1 r rm f}b/N 0 d/db{array/bs x/N 0 d}b
/B{bs N rot put/N N 1 a d}b
/SpA{gs np o o xl rot s e rot s o 0 ne o 0 ne or{at ro}{P P}ie
aR aL m n D aL a 0 M 0 o n aA n aA arc cp f gr}b
/SpH{gs np o o xl rot s e rot s o 0 ne o 0 ne or{at ro}{P P}ie
0 cw 2 dv xl
aR aL m n D aL a 0 M 0 o n aA n 0 arc cp f gr}b/Sp{/St x 0.316/aR x gs
aF lW m 0.8 m St 4 and 0 ne{bW m lW dv bW sl}if/aL x
St 8 and 0 ne{8 ix 8 ix 3 ix 3 ix SpA}if
St 16 and 0 ne{2 ix 6 m 1 a D ix e D ix e D ix e D ix e P SpA}if
St 32 and 0 ne{8 ix 8 ix 3 ix 3 ix SpH}if
St 64 and 0 ne{2 ix 6 m 1 a D ix e D ix e D ix e D ix e P SpH}if
St 2 and 0 ne{St 4 and 0 ne{[hS bW m lW dv] 0 setdash}{dL}ie}if
np M{cv}rp St 128 and 0 ne{f}{st}ie gr}b/Ha{gs np 3 1 r
xl D sc -.7 1.4 M 0.7 1.4 l -.7 2.4 M 0.7 2.4 l SM st gr}b
/OP{3 ix 3 ix xl 3 -1 r s 3 1 r
e s o o at ro D m e D m a sq}b
/OB{/bS x OP D bS dv D lW 2 m lt{P lW 2 m}if/bd x}b
/DA{np 0 0 M aL 0 aR aL m 180 aA s 180 aA a arc cp f}b
/OA{np 0 cw -2 dv M aL 0 aR aL m 180 aA s
180 arc 0 cw -2 dv rl cp f}b
/Ast{SM cw 0.8 m sl st}b/SA{aF m lW m/aL x 0.263/aR x aL 1 aR s m np 0 M
 rad 0 l gs Ast gr}b
/CA{aF lW m 0.8 m/aL x 0.316/aR x aL 1 aR s m 2 dv rad D m o D m s D 0 le{P
P P}{sq at 2
m np rad 0 rad 180 6 -1 r s 180 6 -1 r s arc gs Ast gr cpt
e at ro}ie}b/AA{np rad 0 rad 180 180 6 -1 r a arc gs SM st gr}b
/RA{lW m/w x np rad w M w .7 dv w l rad w n M w .7 dv w n l w
 .35 dv w 2 m M 0 0
l w .35 dv w -2 m l st}b
/HA{lW m/w x np 0 0 M w 2 m D l w 2 m w l rad w l rad w n l w 2 m
w n l w 2 m D n l cp st}b
/Ar1{gs 5 1 r OP/rad x{{2.25 SA DA}{1.5 SA DA}{1 SA DA}{lW 4 m sl 4.5 SA DA}
{lW 4 m sl 3 SA DA}{lW 4 m sl 2 SA
DA}{270 CA DA}{180 CA DA}{120 CA DA}{90 CA DA}{2.5 RA}{2.5
HA}{1 -1 sc 270 CA DA}{1 -1 sc 180 CA DA}{1 -1 sc 120 CA DA}{1 -1 sc 90 CA
DA}{5 RA}{5 HA}{dL 2.25 SA DA}{dL 1.5 SA DA}{dL 1 SA DA}{2.25 SA OA}{1.5 SA
OA}{1 SA OA}{1 -1 sc 2.25 SA OA}{1 -1 sc 1.5 SA OA}
{1 -1 sc 1 SA OA}{270 CA OA}{180 CA OA}{120 CA OA}{90 CA OA}{1 -1 sc 270 CA
OA}{1 -1 sc 180 CA OA}{1 -1 sc 120 CA OA}{1 -1 sc 90 CA OA}{1 -1 sc 270
AA}{1 -1 sc 180 AA}{1 -1 sc 120 AA}{1 -1 sc 90 AA}}e g xc
gr}b/ac{arcto 4{P}rp}b/rO{4 cw m}b/Cr{0 0 1 0 360 arc}b/Ac{XY D sc Cr SM}b
/OrA{Y X at ro XY D rev{neg}if sc}b/Ov{OrA 1 0.4 sc Cr SM}b
/Asc{OrA 1 27 dv D sc}b/LB{9 -6 M
21 -10 27 -8 27 0 cv
27 8 21 10 9 6 cv
-3 2 -3 -2 9 -6 cv
cp}b/DLB{0 0 M
0 0 -9.51 9.65 -9.51 18.02 cv
-9.51 23.22 -6.75 27 0 27 cv
6.75 27 9.51 23.22 9.51 18.02 cv
9.51 9.65 0 0 0 0 cv
cp}b/ZLB{LB}b
/dt{gs np M SM cpt np rot 4.5 dv 0 360 arc f gr}b
/whf{gs 1 setgray f gr SM st}b/blf{gs f gr SM st}b/Rr{0 rO M
0 Y X Y rO ac
X Y X 0 rO ac
X 0 0 0 rO ac
0 0 0 Y rO ac
cp}b/Rc{0 0 M
0 Y l
X Y l
X 0 l
cp}b/grf{gs 0.5 sg f gr SM st}b/gG{D 32 dv D m 1 e s/gry x
currentrgbcolor bDst gry m a 3 1 r gDst gry m a 3 1 r rDst gry m a 3 1 r
setrgbcolor}b/gS{dtransform CMT idtransform
m D 0 lt{n}if sq n D
CMT dtransform idtransform
e 2 m e
xl
7 m 32 a 256 dv D sc}b/gLB{sh{sRmp
32 -0.5 0.5{gs
gG
13.5 0 xl
D 32 s 64 dv 13.5 m D 7 m 24 dv
gS
-13.5 0 xl
LB f
gr}for
LB SM st}{LB grf}ie}b/gOv{sh{sRmp
32 -0.5 0.5{gs
gG
D 32 s 64 dv 0.65 m D
gS
Cr f
gr}for
Cr SM st}{Cr grf}ie}b/gAc{sh{sRmp
32 -0.5 0.5{gs
gG
D 32 s 64 dv D
gS
Cr f
gr}for
Cr SM st}{Cr grf}ie}b
/gDLB{sh{sRmp
32 -0.5 0.5{gs
gG
0 13.5 xl
D 32 s 64 dv 13.5 m D 7 m 24 dv e
gS
0 -13.5 xl
DLB f
gr}for
DLB SM st}{DLB grf}ie}b/gRr{sh{sRmp
32 -0.5 0.5{gs
gG
X 2 dv Y 2 dv xl
D 32 s 64 dv X Y lt{X}{Y}ie m 0.25 m D
gS
X -2 dv Y -2 dv xl
Rr f
gr}for
Rr SM st}{Rr grf}ie}b/gRc{sh{sRmp
32 -0.5 0.5{gs
gG
X 2 dv Y 2 dv xl
D 32 s 64 dv X Y lt{X}{Y}ie m 0.25 m D
gS
X -2 dv Y -2 dv xl
Rc f
gr}for
Rc SM st}{Rc grf}ie}b/gZLB{gLB}b/Ath{Y X at ro XY 2 dv/rad x gs D SA DA gr
 rad 2 m 0 xl 180 ro SA DA}b/Aeq{Y X at ro XY/rad x
rev{1 -1 sc}if
gs
0 lW 2 m xl
D SA OA
gr
rad 0 xl
180 ro
0 lW 2 m xl
SA OA}b/Aos{X Y M SM cpt xl XY e dv lW 1.667 m o o lt{e}if P D sc}b/Ach{5 Aos
gs/Helvetica findfont[1 0 0 -1 0 0]makefont 5.5 scalefont setfont
D stringwidth P 2 dv D 1 a/rad x
n 0 M show gr
rad 2 s -5 M
rad n -5 rad n 1 2 ac
rad n 1 rad 1 2 ac
rad 1 rad -5 2 ac
rad -5 rad n -5 2 ac
cp Ast}b/Ar{D 39 lt{Ar1}
{gs 5 1 r o o xl 3 -1 r e s 3 1 r s e
o 0 lt o 0 lt ne/rev x
D 0 lt{1 -1 sc neg}if/Y x D 0 lt{-1 1 sc neg}
if/X x np{{Y 16 div D 2 S lt{P 2 S}if/lp x
lp 0 M 0 0 l 0 Y l lp Y l
X lp s 0 M X 0 l X Y l X lp s Y l SM st}{Y 16 div D 2 S lt{P 2 S}if/lp x
lp 0 M
0 0 0 Y lp ac
0 Y 2 dv lp neg o lp ac
0 Y 2 dv 0 Y lp ac
0 Y lp Y lp ac
X lp s 0 M
X 0 X Y lp ac
X Y 2 dv X lp a o lp ac
X Y 2 dv X Y lp ac
X Y X lp s Y lp ac SM st}{Y D 2 dv Y 180 pA s 180 pA a arc st
np X Y s Y 2 dv
Y pA D neg arcn st}{Rc SM st}{X lW 2 dv a lW -2 dv M
rO D rl
X lW 2 dv a rO a Y lW 2 dv a rO a l
rO lW -2 dv a Y lW 2 dv a rO a l
lW -2 dv Y lW 2 dv a l
0 Y l X Y l X 0 l cp f
0 0 M
0 Y l
X Y l
X 0 l cp
SM st}{Rr SM st}{rO Y M rO rO xl
0 Y X Y rO ac
X Y X 0 rO ac
X 0 0 0 rO ac
rO neg D xl X Y 0 Y rO ac
cp f
Rr st}{Ac st}{OrA gAc}{Ov st}{OrA 1 .4 sc gOv}{Asc LB whf}{Asc gLB}
{Asc gs gLB gr
-1 -1 sc LB whf}{Asc gs gLB gr
-0.4 -0.4 sc LB whf}{Asc LB gs whf gr
np -0.4 -0.4 sc gLB}{Asc DLB -1 -1 sc DLB gs whf gr
np 90 ro gs gDLB gr -1 -1 sc gDLB}{Asc gs -1 -1 sc ZLB whf gr
gs 3.6 12 sc gOv gr
ZLB whf}{Asc gs -1 -1 sc gZLB gr
gs 3.6 12 sc Cr whf gr
gZLB}{0 0 M X Y l SM st}{bW sl 0 0 M X Y l SM st}
{dL 0 0 M X Y l SM st}{OrA 1 16 dv D sc
0 -1 M
0 0 1 0 1 ac
8 0 8 1 1 ac
8 0 16 0 1 ac
16 0 16 -1 1 ac
SM st}{XY D 0 0 dt X Y dt}{XY 2 dv X Y dt}{XY D X Y dt 0 0 M SM cpt xl
2 dv D sc
1 0 M -1 0 l
0 1 M 0 -1 l
Ast}{XY D X Y dt 0 0 M SM cpt xl
2 dv D sc
1 0 M -1 0 l
Ast}{4.5 Aos
1 0 M -1 0 l
0 1 M 0 -1 l
2 0 M 0 0 2 0 360 arc
Ast}{4.5 Aos
1 0 M -1 0 l
2 0 M 0 0 2 0 360 arc
Ast}{2.25 Ath}{1.5 Ath}{1 Ath}{2.25 Aeq}{1.5 Aeq}{1 Aeq}{OrA 1 16 dv D sc
0 -1 M 0 0 l 16 0 l 16 -1 l SM st}{5 Aos
1 -1 M -1 -1 l
0 2 M 0 -2 l
Ast}{5 Aos
1 -1 M -1 -1 l
1 1 M -1 1 l
0 2 M 0 -2 l
Ast}{4.5 Aos
1 0 M -1 0 l
0 1 M 0 -1 l
Ast}{4.5 Aos
1 0 M -1 0 l
Ast}{gRc}{gRr}{Rc blf}{Rr blf}{Ac blf}{Ov blf}{Asc DLB -1 -1 sc DLB gs whf gr
np 90 ro DLB -1 -1 sc DLB blf}{Asc gs -1 -1 sc ZLB blf gr
gs 3.6 12 sc Cr whf gr
ZLB blf}{Asc gs -1 -1 sc ZLB whf gr
gs 3.6 12 sc Cr blf gr
ZLB whf}{Asc LB gs whf gr
np -0.4 -0.4 sc LB blf}{Asc LB gs f gr gs SM st gr
np -0.4 -0.4 sc LB whf}{Asc LB blf}{Asc LB gs f gr gs SM st gr
np -1 -1 sc LB whf}{Ac whf}{OrA gAc}{Ac blf}{Ov whf}
{OrA 1 .4 sc gOv}{Ov blf}{(Rac)Ach}{(Abs)Ach}{(Rel)Ach}
}e 39 s g xc gr}ie}b/DS{np M l st}b
/DD{gs dL DS gr}b/DB{gs 12 OB bW sl np 0 0 M 0 l st gr}b/ap{e 3 ix a
e 2 ix a}b/PT{D 2 4 gi al P OP D 1 sc
o length 6 gt{P 6 g}{e P 8 dv}ie
D lW 2 m lt{P lW 2 m}if
0 e
0 0
3 -1 r s 3 1 r e s e
0 0 M 1 0 l
0 0 ap M 1 0 ap l
e n e n
0 0 ap M 1 0 ap l
P P}b/DT{gs np PT SM st gr}b
/NH{lW s D hS dv ru
cvi D 0 eq{P 1}if/nH x
D hS nH m s
D 0 lt{P .1 s nH dv}{nH 2 a dv D 0 xl 2 m s nH dv}ie}b
/Bd{D type/arraytype ne{bs e g}if{{P}{{{DS}{DD}{gs 12 OB np
bW 2 dv/bd x
lW 2 dv e D NH e{D bd M bd n l}for
st gr}{gs 12 OB np
lW 2 dv 0 xl NH 1 sc
bW 2 dv wF m nH 1 a dv/bd x
0 1 nH
{D 1 a bd m o o M n l}for SM st gr}{P}{DB}{gs 12 OB
np 0 lW 2 dv o o n M l bW 2 dv
wF m o o l n l
cp f gr}{P}{gs 12 OB/bL x
bW 2 dv D lW lt{P lW}if/bd x np 0 0 M
bL bd 4 m dv ru 2 o o lt{e}if P cvi/nSq x
bL nSq 2 m dv D sc
nSq{.135  .667 .865  .667 1 0 rcurveto
.135 -.667 .865 -.667 1 0 rcurveto}rp SM st gr}{gs 12 OB
np 0 lW 2 dv o o n M l bW 2 dv
wF m o o l n l
cp SM lW 0.8 m sl st gr}{P}{4 2 r gs OP/rad x 1 SA DA gr}{P}
}o 1 g 1 s g e 2 4 gi al P
5 -1 r xc}{al P 8 ix 1 eq{DD}{DS}ie 5 -1 r 2 eq{DB}{DS}ie P}{DT}}o 0 g g xc}b
/ed{gs cpt np cw 2 dv 0 360 arc f gr}b
/SPe{gs 0 e xl 1 1 S dv D n sc CMT currentmatrix P lW sl 4.0 setmiterlimit
np}b/ws{Wd 0 32 4 -1 roll widthshow}b/blank/Times-Roman findfont/CharStrings
g/space g d/mv 256 array d/NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT
/FF/CR/SO/SI
/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
mv 0 32 gi as P
mv 32/Times-Roman findfont/Encoding get
32 96 gi putinterval
mv 39/quotesingle put
mv 96/grave put/unknown/unknown/quotesinglbase/florin/quotedblbase/ellipsis
/dagger/daggerdbl
/circumflex/perthousand/Scaron/guilsinglleft/OE/unknown/unknown/unknown
/unknown/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash
/emdash
/tilde/trademark/scaron/guilsinglright/oe/unknown/unknown/Ydieresis
/blank/exclamdown/cent/sterling/currency/yen/brokenbar/section
/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered
/macron
/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph
/periodcentered
/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf
/threequarters/questiondown

mv 128 128 gi as P/fSt 50 string d(ChemDraw)fSt copy P/fD{D/Symbol eq{
findfont[1 0 0 -1 0 0]makefont}{D {findfont}stopped{/Helvetica findfont}if
D length dict/newdict x{
1 index/FID ne{1 index/FontMatrix eq{[1 0 0 -1 0 0]matrix concatmatrix}if
newdict 3 1 r put}{P P}ie}forall
newdict/Encoding mv put
fSt 8 fSt length 8 sub gi cvs length 8 add
fSt 0 rot gi cvn newdict definefont}ie}b/ts{gs xl ro 0 0 M}b
/nl{0 e xl 0 0 M}b/tx{ft e g e sf m rot D 96 and 0 ne{
64 and 0 ne{-0.5}{0.25}ie e 0.75 m}{P 0 e}ie
D 4 -1 r e scalefont setfont m cpt P e M}b
end
%%EndProcSet
%%EndProlog

chemdict30 begin
/cW 24 def
/bW 48 def
/lW 12 def
/hS 32 def
/sh true def
222 SPe[
/Helvetica
fD
/Helvetica-Oblique
fD]/ft x
600 1560 M
5760 1560 l
5760 2880 l
600 2880 l
cp clip np
65535 65535
65535 sBg
0 1640 2178 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
(N)show
gr
0 1182 2178 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
(N)show
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1619 2364 M
1627 2376 l
1335 2376 l
1344 2364 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1598 2330 M
1598 2342 l
1364 2342 l
1364 2330 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1669 2208 M
1681 2212 l
1627 2376 l
1619 2364 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1481 1941 M
1481 1926 l
1629 2034 l
1622 2043 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1343 2041 M
1336 2032 l
1481 1926 l
1481 1941 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1363 2069 M
1356 2059 l
1478 1971 l
1485 1981 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1344 2364 M
1335 2376 l
1282 2212 l
1293 2209 l
cp
f
gr
0 1033 2091 ts
0.0000 0.0000 0.0000 1.0000 sk
-377
0 M
0 10 0 tx
(Mes)show
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1055 2043 M
1059 2031
l
1167 2066 l
1163 2078 l
cp
f
gr
0 1897 2091 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
(Mes)show
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
1878 2040 M
1882 2051
l
1802 2077 l
1798 2066 l
cp
f
gr
gs
12 D sl/lW x
24 /cW x
48 /bW x
32 /hS x
0.0000 0.0000 0.0000 1.0000 sk
10 D sl/lW x
1228 1973 M
1295
1973 l st
1261 1940 M
1261 2006 l st
gr
0 2085 2400 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
(Br)show
64 10 0 tx
(\226)show
gr
0 5084 2247 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
(N)show
gr
0 4625 2247 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
(N)show
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
5062 2433 M
5071 2445 l
4778 2445 l
4787 2433 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
5042 2399 M
5042 2411 l
4808 2411 l
4808 2399 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
5113 2277 M
5124 2281 l
5071 2445 l
5062 2433 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
4925 2010 M
4925 1995 l
5072 2102 l
5065 2112 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
4787 2110 M
4779 2101 l
4925 1995 l
4925 2010 l
cp
f
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
4787 2433 M
4778 2445 l
4725 2281 l
4737 2278 l
cp
f
gr
0 4476 2160 ts
0.0000 0.0000 0.0000 1.0000 sk
-377 0 M
0 10 0 tx
(Mes)show
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
4498 2112 M
4502 2100
l
4610 2135 l
4606 2147 l
cp
f
gr
0 5340 2160 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
(Mes)show
gr
gs
0.0000 0.0000 0.0000 1.0000 sk
np
5321 2109 M
5325 2120
l
5246 2146 l
5243 2134 l
cp
f
gr
gs
12 D sl/lW x
24 /cW x
48 /bW x
32 /hS x
0.0000 0.0000 0.0000 1.0000 sk
np
4962 1946 17 0 360 arc
cp
f
np
4887 1946 17 0 360 arc
cp
f
gr
0 3236 1785 ts
0.0000 0.0000 0.0000 1.0000 sk
-364.5 0 M
0 10 0 tx
(KO-)show
2 10 1 tx
(t)show
0 10 0 tx
(-Bu)show
201 nl
-114.5 0 M
0 10 0 tx
(thf)show
gr
gs
12 D sl/lW x
24 /cW x
48 /bW x
32 /hS x
0.0000 0.0000 0.0000 1.0000 sk
10 D sl/lW x
3597 2130 M
2771 2130 l st
gs
3581 2161 3701 2130 3701 2130 3596 2143 3581 2161 3581 2161 3581 2098
3596 2116 3596 2130 3701 2130 3581 2098 3581 2098 4 3701 2130 0 Sp
gr
gr
0
1215 2805 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
%<labels>(TMP1)show
gr
0 4642 2805 ts
0.0000 0.0000 0.0000 1.0000 sk
0 10 0 tx
%<labels>(TMP2)show
gr
gr end
%%Trailer
showpage
%</scheme>

%\fi