%% mhchem.sty %% Copyright 2004-2011 M.a-r.t-i.n H.e-n.s-e.l % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License version 1.3c % which can be found at % http://www.latex-project.org/lppl/lppl-1-3c.txt % % This work has the LPPL maintenance status "maintained". % The Current Maintainer of this work is M.a-r.t-i.n H.e-n.s-e.l. % % ( In order to fight spam, the maintainer's contact ) % ( information is "encrypted" with ROT13. ) % ( If you do not know ROT13 yet and have no tool for ) % ( decryption, simply do an Internet search for "ROT13". ) % % ,---[ ROT 13 ]--- % | Gur Pheerag Znvagnvare bs guvf jbex vf Znegva Urafry % | jub pna or pbagnpgrq ivn % | zupurz@ZnegvaUrafry.qr % | be ivn znvy % | Znegva Urafry % | Cbfgfge. 20 % | 09232 Unegznaafqbes % | Treznal % `---------- % % This work consists of the files mhchem.sty, rsphrase.sty, % mhchem.pdf and legal.txt. % % \ProvidesPackage{mhchem}[2011/06/03 v3.11 for typesetting chemical formulae] \RequirePackage{ifthen} \RequirePackage{calc}[1998/07/07] \RequirePackage{twoopt} \RequirePackage{amsmath} \RequirePackage{keyval} \RequirePackage{graphics} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% misc %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareMathSymbol{\mhchem@hyphen}{0}{operators}{45} %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \cee %%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand*{\cee}[1]{% \ifnum 1<\mhchem@option@version% \def\mhchem@ce@out{}% {\mhchem@ce@v#1\mhchem@empty\\\mhchem@END\mhchem@ENDEND}% \ensuremath{% \mhchem@ce@out% }% \else% \PackageWarningNoLine{mhchem}{% The \string\cee{} command of mhchem is only available\MessageBreak when you secify [version=2] or greater}% \fi% }% \def\mhchem@ce@v#1\\#2#3\mhchem@ENDEND{% \ifx\mhchem@END#2% \mhchem@ce@vii#1&\mhchem@END\mhchem@ENDEND% \else% \mhchem@ce@vii#1&\mhchem@END\mhchem@ENDEND% \g@addto@macro\mhchem@ce@out{\\}% \mhchem@ce@v#2#3\mhchem@ENDEND% \fi% } \long\def\mhchem@ce@vii#1#3\mhchem@ENDEND{% \ifx\mhchem@END#2% \g@addto@macro\mhchem@ce@out{\ce@main{#1}}% \else% \g@addto@macro\mhchem@ce@out{\ce@main{#1}}% \g@addto@macro\mhchem@ce@out{&}% \mhchem@ce@vii#2#3\mhchem@ENDEND% \fi% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \ce %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% \def\mhchem@protect{\protect\noexpand\protect}% \newcommand\ce[1]{\mhchem@ce@xiii{\mhchem@ce@viii#1 \mhchem@END\mhchem@ENDEND}}% % % \def\mhchem@ce@viii#1 #2\mhchem@ENDEND{% \ifx\mhchem@END#2% \ifx\@empty#1\@empty \else \mhchem@ce@x#1\mhchem@END\mhchem@ENDEND% \fi \else% \mhchem@ce@x#1\mhchem@END\mhchem@ENDEND% \space\mhchem@ce@viii#2\mhchem@ENDEND% \fi } \def\mhchem@ce@x#1#2\mhchem@ENDEND{% \ifx\@empty#1\@empty% \mhchem@ce@xi{}\mhchem@END\mhchem@ENDEND% \else%\ifx\mhchem@END#1\else \mhchem@ce@xi#1\mhchem@END\mhchem@ENDEND% \fi%\fi% \ifx\mhchem@END#2% \else% \mhchem@ce@x#2\mhchem@ENDEND% \fi% } \def\mhchem@ce@xi#1#2\mhchem@ENDEND{% \ifx\mhchem@END#2% \ifx\@empty#1\@empty% {}% \else\if\noexpand#1##% \mhchem@protect\tbond% \else% \mhchem@protect#1% \fi\fi% \else% {\mhchem@ce@xii#1#2}% \fi% } \def\mhchem@ce@xii#1\mhchem@END{\mhchem@ce@viii#1 \mhchem@END\mhchem@ENDEND}% \DeclareRobustCommand\mhchem@ce@xiii[1]{% \bgroup% \ifnum 4>\mhchem@option@version% \def\hyphen{\mhchem@hyphen}% \fi% \def\mhchem@protect{\noexpand}% \edef\mhchem@tmp{#1}% % \expandafter\ce@main\expandafter{\mhchem@tmp}% \egroup } %%% \DeclareRobustCommand*{\ce@main}[1]{% \bgroup% \ifnum 1<\mhchem@option@version% \ifmmode\else\def\mhchem@option@alwaystextmode{1}\fi% \fi% \def\bond{}\def\sbond{}\def\dbond{}\def\tbond{}% \ifx\@empty#1\@empty\else% \ifmmode\else\mhchem@option@textFont\fi% \ensuremath{% \mhchem@ce@xx#1 \mhchem@END\mhchem@ENDEND% }% \fi% \egroup% }% \def\mhchem@ce@xx#1 #2\mhchem@ENDEND{% \mhchem@ce@i#1\mhchem@empty\mhchem@ENDEND% \ifx\mhchem@END#2% \else% \mhchem@ce@xx#2 \mhchem@ENDEND% \fi% } \def\mhchem@ce@i#1#2\mhchem@ENDEND{% \ifcat a#1 {\mhchem@ce@ii{#1#2}}% \else\ifx 1#1{\mhchem@ce@ii{#1#2}}% \else\ifx 2#1{\mhchem@ce@ii{#1#2}}% \else\ifx 3#1{\mhchem@ce@ii{#1#2}}% \else\ifx 4#1{\mhchem@ce@ii{#1#2}}% \else\ifx 5#1{\mhchem@ce@ii{#1#2}}% \else\ifx 6#1{\mhchem@ce@ii{#1#2}}% \else\ifx 7#1{\mhchem@ce@ii{#1#2}}% \else\ifx 8#1{\mhchem@ce@ii{#1#2}}% \else\ifx 9#1{\mhchem@ce@ii{#1#2}}% \else\ifx 0#1{\mhchem@ce@ii{#1#2}}% \else\ifx (#1{\mhchem@ce@ii{#1#2}}% \else\ifx [#1{\mhchem@ce@ii{#1#2}}% \else\ifx \{#1{\mhchem@ce@ii{#1#2}}% \else\ifx ^#1{\mhchem@ce@ii{#1#2}}% \else\if ^#1{\mhchem@ce@ii{#1#2}}% \else\ifx _#1{\mhchem@ce@ii{#1#2}}% \else\ifx $#1{\mhchem@ce@ii{#1#2}}% \else\ifx -#1{\ifx\@empty#2\@empty#1\else\mhchem@ce@dash#2\mhchem@END\fi}% \else\if\noexpand#1<{\ifx\@empty#2\@empty#1\else\mhchem@ce@lt#2\mhchem@END\fi}% \else\ifx +#1+ \mhchem@ce@ii{#2}% \else\ifx \protect#1{\mhchem@ce@ii{#1#2}}% % \else\ifx\ce#1 \mhchem@ce@i #2 \mhchem@END% \else\ifx\cf#1 \mhchem@cf{#2}% \else\ifx\cmath#1 \mhchem@ce@cmath#2\mhchem@END% \else\ifx\bond#1{\mhchem@ce@ii{#1#2}}% \else\ifx\sbond#1{\mhchem@ce@ii{#1#2}}% \else\ifx\dbond#1{\mhchem@ce@ii{#1#2}}% \else\ifx\tond#1{\mhchem@ce@ii{#1#2}}% \else\ifx\label#1 \mhchem@ce@label#2\mhchem@END% \else\ifx\tag#1 \mhchem@ce@tag#2\mhchem@END% % \else #1#2% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% } % \def\mhchem@ce@dash#1#2\mhchem@END{% \if\noexpand#1>% {}\ifx\@empty#2\@empty\mhchem@gives#2% \else\mhchem@ce@deploycommand{mhchem@gives}#2{}\mhchem@END\fi{}% \else% -#1#2% \fi% }% \def\mhchem@ce@lt#1#2\mhchem@END{% \ifx =#1\mhchem@ce@equal#2\mhchem@END% \else\if\noexpand#1<\mhchem@ce@equiL#2\mhchem@END% \else\ifx-#1% \ifx\@empty#2\@empty% {}\mhchem@givesleft#2{}% \else% \mhchem@ce@dashtwo#2\mhchem@END% \fi% \else% <#1#2% \fi\fi\fi% } \def\mhchem@ce@equal#1#2\mhchem@END{% \if\noexpand#1>% (<=)>... \ifx\@empty#2\@empty{}\mhchem@equilibrium#2{}% \else% \mhchem@ce@equi#2\mhchem@END% \fi% \else% <=#1#2% \fi% } \def\mhchem@ce@equi#1#2\mhchem@END{% \if\noexpand#1>% {}\ifx\@empty#2\@empty\mhchem@equilibriumRight#2% \else\mhchem@ce@deploycommand{mhchem@equilibriumRight}#2{}\mhchem@END\fi{}% \else% {}\mhchem@ce@deploycommand{mhchem@equilibrium}#1#2{}\mhchem@END{}% \fi% } \def\mhchem@ce@equiL#1#2\mhchem@END{% \ifx =#1\mhchem@ce@equiLi#2\mhchem@END% \else<=#1#2% \fi% } \def\mhchem@ce@equiLi#1#2\mhchem@END{% \if\noexpand#1>% (<<=)> {}\ifx\@empty#2\@empty\mhchem@equilibriumLeft#2% \else\mhchem@ce@deploycommand{mhchem@equilibriumLeft}#2{}\mhchem@END\fi{}% \else% <<=#1#2% \fi% } \def\mhchem@ce@dashtwo#1#2\mhchem@END{% \if\noexpand#1>% {}\ifx\@empty#2\@empty\mhchem@mesomeric#2% \else\mhchem@ce@deploycommand{mhchem@mesomeric}#2{}\mhchem@END\fi{}% \else% {}\mhchem@ce@deploycommand{mhchem@givesleft}#1#2{}\mhchem@END{}% \fi% } \def\mhchem@ce@deploycommand#1#2#3\mhchem@END{% \ifx T#2\csname#1T\endcsname#3% \else\ifx C#2\csname#1C\endcsname#3% \else\csname#1\endcsname#2#3\fi\fi% } \def\mhchem@ce@ii#1{% \mhchem@ce@iii#1% } \newtoks\tok@mhchem@ce@iii% \def\mhchem@ce@iii@tmp@i{}% \def\mhchem@ce@iii@tmp@ii{}% \def\mhchem@ce@iii#1\mhchem@empty{% \tok@mhchem@ce@iii{#1}% \edef\mhchem@ce@iii@tmp@i{\the\tok@mhchem@ce@iii}% % \def\mhchem@ce@iii@tmp@ii{(^)}% \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% {}\mathop{\uparrow}{}% \else\def\mhchem@ce@iii@tmp@ii{^}% \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% {}\mathop{\uparrow}{}% \else\def\mhchem@ce@iii@tmp@ii{(v)}% \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% {}\mathop{\downarrow}{}% \else\def\mhchem@ce@iii@tmp@ii{v}% \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% {}\mathop{\downarrow}{}% \else% \mhchem@cf{#1}% \fi\fi\fi\fi% }% \def\mhchem@ce@cmath#1#2\mhchem@END{\mhchem@cmath{#1}\mhchem@cf{#2}} \def\mhchem@ce@label#1#2\mhchem@END{\label{#1}\mhchem@cf{#2}} \def\mhchem@ce@tag#1#2\mhchem@END{\tag{#1}\mhchem@cf{#2}} %%%%%%%%%%%%% %%% arrows \newlength{\mhchem@arrowminlength} \setlength{\mhchem@arrowminlength}{1em} %TODO: adapt min length to each of the math modes %%% for font arrows %%%%% idea taken from http://www.texnik.de/misc/harpoon.phtml \def\mhchem@rightharpoonupfill@{\arrowfill@\relbar\relbar\rightharpoonup} \def\mhchem@leftharpoondownfill@{\arrowfill@\leftharpoondown\relbar\relbar} \newcommand*\mhchem@xrightleftharpoons[2][]{% \mathrel{% \rlap{\protect\raisebox{.22ex}{$\ext@arrow 3399\mhchem@rightharpoonupfill@{}{\mhchem@mathbox[#1]{#2}}$}}% \raisebox{-.22ex}{$\ext@arrow 3399\mhchem@leftharpoondownfill@{#1}{\hphantom{#2}}$}}}% \newsavebox\mhchem@arrows@box% \newcommand*\mhchem@xlongrightshortleftharpoons[2][]{\mathrel{% \sbox{\mhchem@arrows@box}% {$\mkern9mu\ext@arrow 3399\mhchem@leftharpoondownfill@% {#1}{\hphantom{#2}\mkern-6mu\mkern-12mu}$}% \rlap{\protect\raisebox{-.22ex}{\usebox{\mhchem@arrows@box}}}% \protect\raisebox{.22ex}{$\ext@arrow 3399\mhchem@rightharpoonupfill@% {\hphantom{\usebox{\mhchem@arrows@box}}\mkern-6mu}{#2}$}% }} \newcommand*\mhchem@xshortrightlongleftharpoons[2][]{\mathrel{% \sbox{\mhchem@arrows@box}% {$\mkern9mu\ext@arrow 3399\mhchem@rightharpoonupfill@% {\hphantom{#1}\mkern-6mu\mkern-12mu}{#2}$}% \rlap{\protect\raisebox{.22ex}{\usebox{\mhchem@arrows@box}}}% \protect\raisebox{-.22ex}{$\ext@arrow 3399\mhchem@leftharpoondownfill@% {#1}{\hphantom{\usebox{\mhchem@arrows@box}}\mkern-6mu}$}% }} %\newcommand*\mhchem@xleftrightarrow[2][]{\ext@arrow 3095\leftrightarrowfill@{#1}{#2}} %%% for pgf arrows \newcommand*\mhchem@rightarrow@pgf[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex) -- ++(#1,0cm) arc (250:198:0.6ex) arc (198:250:0.6ex) arc (110:162:0.6ex); \end{tikzpicture}% }% \newcommand*\mhchem@leftarrow@pgf[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] (#1,0.575ex) -- (0cm,0.575ex) arc (70:18:0.6ex) arc (18:70:0.6ex) arc (-70:-18:0.6ex); \end{tikzpicture}% }% \newcommand*\mhchem@leftrightarrow@pgf[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex) arc (70:18:0.6ex) arc (18:70:0.6ex) arc (-70:-18:0.6ex) arc (-18:-70:0.6ex) -- ++(#1,0cm) arc (250:198:0.6ex) arc (198:250:0.6ex) arc (110:162:0.6ex); \end{tikzpicture}% }% \newcommand*\mhchem@leftrightharpoon@pgf[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,1ex); \draw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex+0.22ex) -- ++(#1,0cm) arc (250:198:0.9ex); \draw[cap=round, join=round, line width=0.09ex] (#1,0.575ex-0.22ex) -- ++(-#1,0cm) arc (70:18:0.9ex); \end{tikzpicture}% }% \newcommand*\mhchem@longrightshortleftharpoons@pgf[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,1ex); \draw[cap=round, join=round, line width=0.09ex] (0.0cm,0.575ex+0.22ex) -- ++(#1,0cm) arc (250:198:0.9ex); \draw[cap=round, join=round, line width=0.09ex] (#1+0.5em-1em,0.575ex-0.22ex) -- (0.5em,0.575ex-0.22ex) arc (70:18:0.9ex); \end{tikzpicture}% }% \newcommand*\mhchem@shortrightlongleftharpoons@pgf[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,1ex); \draw[cap=round, join=round, line width=0.09ex] (0.5em,0.575ex+0.22ex) -- ++(#1-1em,0cm) arc (250:198:0.9ex); \draw[cap=round, join=round, line width=0.09ex] (#1,0.575ex-0.22ex) -- ++(-#1,0cm) arc (70:18:0.9ex); \end{tikzpicture}% }% %%% for pgf-filled arrows \newcommand*\mhchem@rightarrow@pgffilled[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (#1,0.575ex) -- ++(-0.6ex,0.2ex) -- ++(0.15ex,-0.2ex) -- ++(-0.15ex,-0.2ex) -- cycle; \end{tikzpicture}% }% \newcommand*\mhchem@leftarrow@pgffilled[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex) -- ++(0.6ex,0.2ex) -- ++(-0.15ex,-0.2ex) -- ++(+0.15ex,-0.2ex) -- cycle; \end{tikzpicture}% }% \newcommand*\mhchem@leftrightarrow@pgffilled[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (#1,0.575ex) -- ++(-0.6ex,0.2ex) -- ++(0.15ex,-0.2ex) -- ++(-0.15ex,-0.2ex) -- cycle; \filldraw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex) -- ++(0.6ex,0.2ex) -- ++(-0.15ex,-0.2ex) -- ++(+0.15ex,-0.2ex) -- cycle; \end{tikzpicture}% }% \newcommand*\mhchem@leftrightharpoon@pgffilled[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,1ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex+0.22ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (#1,0.575ex+0.22ex) -- ++(-0.6ex,0.25ex) -- ++(0.15ex,-0.25ex) -- cycle; \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex-0.22ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex-0.22ex) -- ++(0.6ex,-0.25ex) -- ++(-0.15ex,0.25ex) -- cycle; \end{tikzpicture}% }% \newcommand*\mhchem@longrightshortleftharpoons@pgffilled[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,1ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex+0.22ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (#1,0.575ex+0.22ex) -- ++(-0.6ex,0.25ex) -- ++(0.15ex,-0.25ex) -- cycle; \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0.5em,0.575ex-0.22ex) -- ++(#1-1em,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (0.5em,0.575ex-0.22ex) -- ++(0.6ex,-0.25ex) -- ++(-0.15ex,0.25ex) -- cycle; \end{tikzpicture}% }% \newcommand*\mhchem@shortrightlongleftharpoons@pgffilled[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,1ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0.5em,0.575ex+0.22ex) -- ++(#1-1em,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (#1-0.5em,0.575ex+0.22ex) -- ++(-0.6ex,0.25ex) -- ++(0.15ex,-0.25ex) -- cycle; \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex-0.22ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex-0.22ex) -- ++(0.6ex,-0.25ex) -- ++(-0.15ex,0.25ex) -- cycle; \end{tikzpicture}% }% \newlength{\mhchem@arrowlength@pgf} \newlength{\mhchem@arrowminlength@pgf} %TODO: use \mhchem@arrowminlength \def\mhchem@labeledarrow@pgf#1#2#3#4#5#6#7{% 1-4 muskips 5 arrow 6 text above 7 below \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% \mkern#3mu% \mathop{}% \limits% \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% #7\if0#2\else\mkern#2mu\fi}}% \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% #6\if0#2\else\mkern#2mu\fi}}% \mkern#4mu% }}}% % \setlength\mhchem@arrowminlength@pgf{10pt+0.5em}% \ifthenelse{\equal{mhchem@longrightshortleftharpoons@pgf}{#5}}{ \setlength\mhchem@arrowminlength@pgf{1.85em}% \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% \mkern#3mu% \mathop{}% \limits% \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% #7\if0#2\else\mkern#2mu\fi}}% \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% \hspace{1em}% %% #6\if0#2\else\mkern#2mu\fi}}% \mkern#4mu% }}}% }{}% \ifthenelse{\equal{mhchem@shortrightlongleftharpoons@pgf}{#5}}{ \setlength\mhchem@arrowminlength@pgf{1.85em}% \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% \mkern#3mu% \mathop{}% \limits% \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% \hspace{1em}% %% #7\if0#2\else\mkern#2mu\fi}}% \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% #6\if0#2\else\mkern#2mu\fi}}% \mkern#4mu% }}}% }{}% \ifthenelse{\equal{mhchem@longrightshortleftharpoons@pgffilled}{#5}}{ \setlength\mhchem@arrowminlength@pgf{1.85em}% \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% \mkern#3mu% \mathop{}% \limits% \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% #7\if0#2\else\mkern#2mu\fi}}% \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% \hspace{1em}% %% #6\if0#2\else\mkern#2mu\fi}}% \mkern#4mu% }}}% }{}% \ifthenelse{\equal{mhchem@shortrightlongleftharpoons@pgffilled}{#5}}{ \setlength\mhchem@arrowminlength@pgf{1.85em}% \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% \mkern#3mu% \mathop{}% \limits% \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% \hspace{1em}% %% #7\if0#2\else\mkern#2mu\fi}}% \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% #6\if0#2\else\mkern#2mu\fi}}% \mkern#4mu% }}}% }{}% % \ifdim\mhchem@arrowlength@pgf<\mhchem@arrowminlength@pgf% \setlength\mhchem@arrowlength@pgf{\mhchem@arrowminlength@pgf}% \fi% \mathrel{\mkern#3mu\mathop{\csname#5\endcsname{\mhchem@arrowlength@pgf}% }% \limits \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% #7\if0#2\else\mkern#2mu\fi}}% \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% #6\if0#2\else\mkern#2mu\fi}}% \mkern#4mu% }%} }% \newcommandtwoopt*\mhchem@gives[2][][]{} \newcommandtwoopt*\mhchem@givesleft[2][][]{} \newcommandtwoopt*\mhchem@mesomeric[2][][]{} \newcommandtwoopt*\mhchem@equilibrium[2][][]{} \newcommandtwoopt*\mhchem@equilibriumRight[2][][]{} \newcommandtwoopt*\mhchem@equilibriumLeft[2][][]{} \newcommand\mhchem@definearrows[1]{% %%% font \ifthenelse{\equal{#1}{font}}{% \renewcommandtwoopt*\mhchem@gives[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% \xrightarrow% [{##2}]% {##1}}}% \renewcommandtwoopt*\mhchem@givesleft[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% \xleftarrow% [{##2}]% {##1}}}% \renewcommandtwoopt*\mhchem@mesomeric[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% \ext@arrow 3399\leftrightarrowfill@% {##2}% {##1}}}% \renewcommandtwoopt*{\mhchem@equilibrium}[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% \mhchem@xrightleftharpoons% [{##2}]% {##1}}}% \renewcommandtwoopt*{\mhchem@equilibriumRight}[2][\hphantom{\makebox[\mhchem@arrowminlength]{}}][]{\ensuremath{% \mhchem@xlongrightshortleftharpoons% [{##2}]% {##1}}}% \renewcommandtwoopt*{\mhchem@equilibriumLeft}[2][][\hspace{\mhchem@arrowminlength}]{\ensuremath{% \mhchem@xshortrightlongleftharpoons% [{##2}]% {##1}}}% }{%%% pgf \ifthenelse{\equal{#1}{pgf}}{% \renewcommandtwoopt*\mhchem@gives[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{1.5}{5}{1.5}{1}{mhchem@rightarrow@pgf}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@givesleft[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{5}{1.5}{1}{1.5}{mhchem@leftarrow@pgf}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@mesomeric[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{5}{5}{1}{1}{mhchem@leftrightarrow@pgf}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@equilibrium[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{6}{6}{1}{1}{mhchem@leftrightharpoon@pgf}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@equilibriumRight[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{6}{6}{1}{1}{mhchem@longrightshortleftharpoons@pgf}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@equilibriumLeft[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{6}{6}{1}{1}{mhchem@shortrightlongleftharpoons@pgf}{##2}{##1}}}% }{%%% pgf-filled \ifthenelse{\equal{#1}{pgf-filled}}{% \renewcommandtwoopt*\mhchem@gives[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{1.5}{7}{1.5}{1}{mhchem@rightarrow@pgffilled}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@givesleft[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{7}{1.5}{1}{1.5}{mhchem@leftarrow@pgffilled}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@mesomeric[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@leftrightarrow@pgffilled}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@equilibrium[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@leftrightharpoon@pgffilled}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@equilibriumRight[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@longrightshortleftharpoons@pgffilled}{##2}{##1}}}% \renewcommandtwoopt*\mhchem@equilibriumLeft[2][][]% {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@shortrightlongleftharpoons@pgffilled}{##2}{##1}}}% }{% \PackageError{mhchem}{The option font=#1 is not supported}% }% }}% } \newcommandtwoopt*\mhchem@givesT[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@gives[\text{#1}][\text{#2}]}% \newcommandtwoopt*\mhchem@givesC[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@gives[\ce@main{#1}][\ce@main{#2}]}% \newcommandtwoopt*\mhchem@givesleftT[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@givesleft[\text{#1}][\text{#2}]}% \newcommandtwoopt*\mhchem@givesleftC[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@givesleft[\ce@main{#1}][\ce@main{#2}]}% \newcommandtwoopt*\mhchem@mesomericT[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@mesomeric[\text{#1}][\text{#2}]}% \newcommandtwoopt*\mhchem@mesomericC[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@mesomeric[\ce@main{#1}][\ce@main{#2}]}% \newcommandtwoopt*{\mhchem@equilibriumT}[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@equilibrium[\text{#1}][\text{#2}]} \newcommandtwoopt*{\mhchem@equilibriumC}[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@equilibrium[\ce@main{#1}][\ce@main{#2}]} \newcommandtwoopt*{\mhchem@equilibriumRightT}[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@equilibriumRight[\text{#1}][\text{#2}]} \newcommandtwoopt*{\mhchem@equilibriumRightC}[2][\hspace{\mhchem@arrowminlength}][]% {\mhchem@equilibriumRight[\ce@main{#1}][\ce@main{#2}]} \newcommandtwoopt*{\mhchem@equilibriumLeftT}[2][][\hspace{\mhchem@arrowminlength}]% {\mhchem@equilibriumLeft[\text{#1}][\text{#2}]} \newcommandtwoopt*{\mhchem@equilibriumLeftC}[2][][\hspace{\mhchem@arrowminlength}]% {\mhchem@equilibriumLeft[\ce@main{#1}][\ce@main{#2}]} %%%%%%%%%%%%% %%% bonds %%% % \newlength\mhchem@bondwidth% \newlength\mhchem@bondheight% \newlength\mhchem@smallbondwidth@tmpA% \newlength\mhchem@smallbondwidth@tmpB% \newlength\mhchem@smallbondwidth% \def\mhchem@setbondwidth{% \setlength\mhchem@bondwidth{\widthof{\sbond}}% \setlength\mhchem@bondheight{\heightof{\sbond}}% \setlength\mhchem@smallbondwidth@tmpA{% \mhchem@bondwidth-\mhchem@option@minussidebearingleft-\mhchem@option@minussidebearingright}% \setlength\mhchem@smallbondwidth@tmpB{% \widthof{\sbond\sbond\sbond}-\mhchem@option@minussidebearingleft-% \mhchem@option@minussidebearingright}% \setlength\mhchem@smallbondwidth{\mhchem@bondwidth*% \ratio{\mhchem@smallbondwidth@tmpA}{\mhchem@smallbondwidth@tmpB}}% } \def\mhchem@halfbond{\rlap{\hspace{\mhchem@option@minussidebearingleft}% \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}\unskip% \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}% \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}}% \phantom{\sbond}} \def\mhchem@bond#1{% % \if ##\noexpand#1% \tbond% \else\ifx \tbond#1% \tbond% \else% \ifthenelse{\equal{#1}{-}}{\sbond}{% \ifthenelse{\equal{#1}{=}}{\dbond}{% \ifthenelse{\equal{#1}{~}}{% \mhchem@setbondwidth% \mhchem@halfbond}{% \ifthenelse{\equal{#1}{~-}}{% \mhchem@setbondwidth% \rlap{\protect\raisebox{.2ex}{\mhchem@halfbond}}% \protect\raisebox{-.2ex}{\sbond}}{% \ifthenelse{\equal{#1}{~--}}{% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}}% \rlap{\sbond}% \protect\raisebox{-.4ex}{\sbond}}{% \ifthenelse{\equal{#1}{~=}}{% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}}% \rlap{\sbond}% \protect\raisebox{-.4ex}{\sbond}}{% \ifthenelse{\equal{#1}{-~-}}{% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\sbond}}% \rlap{\mhchem@halfbond}% \protect\raisebox{-.4ex}{\sbond}}{% \ifthenelse{\equal{#1}{...}}{{\cdot}{\cdot}{\cdot}}{% \ifthenelse{\equal{#1}{....}}{{\cdot}{\cdot}{\cdot}{\cdot}}{% \ifthenelse{\equal{#1}{->}}{{\rightarrow}}{% \ifthenelse{\equal{#1}{<-}}{{\leftarrow}}{% % \PackageError{mhchem}{unknown bond type in \string\bond (#1)}% }}}}}}}}}}}% \fi\fi% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \cf %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newtoks\mhchem@cf@result% \newcommand*\mhchem@cf[2][]{% \bgroup% %%% \def\sbond{{\ensuremath{-}}}% \ifnum 2=\mhchem@option@version% \let\bond\sbond% \else\ifnum 2<\mhchem@option@version% \DeclareRobustCommand*\bond{\mhchem@bond}% \fi\fi% \DeclareRobustCommand\dbond{\rlap{\protect\raisebox{.2ex}{\sbond}}\protect\raisebox{-.2ex}{\sbond}}% \DeclareRobustCommand\tbond{\rlap{\protect\raisebox{.4ex}{\sbond}}% \rlap{\sbond}\protect\raisebox{-.4ex}{\sbond}}% \def\hyphen{\mhchem@hyphen}% %%% \ifmmode\else\def\mhchem@option@alwaystextmode{1}\fi% \if 1\mhchem@option@alwaystextmode% \edef\mhchem@mathOrText##1{\noexpand\text{##1}}% \edef\mhchem@mathOrText@ii##1##2{##2}% \else% \ifnum 1<\mhchem@option@version% \edef\mhchem@mathOrText##1{\ifmmode\noexpand\mhchem@option@mathFont{##1}\else\noexpand\text{##1}\fi}% \edef\mhchem@mathOrText@ii##1##2{\ifmmode\noexpand\mhchem@option@mathFont{##1}\else ##2\fi}% \else% \edef\mhchem@mathOrText##1{\ifmmode ##1\else\noexpand\text{##1}\fi}% \edef\mhchem@mathOrText@ii##1##2{\ifmmode ##1\else ##2\fi}% \fi% \fi% \ifmmode\else\mhchem@option@textFont\fi% %%% \def\mhchem@cf@state{s}% % % % % % % % % % % \def\mhchem@cf@startedWithBond{0}% %%% \mhchem@cf@outputReset% \mhchem@cf@result={}% %%% \mhchem@cf@continue#2\mhchem@END% %%% % % \ifthenelse{\equal{#1}{}}% {% \ensuremath{\the\mhchem@cf@result}% }{% \ensuremath{\overset{#1}{\the\mhchem@cf@result}}% }% %TODO: insert kerning if full stop (or similar) follows superscript %\@ifnextchar,{\kern-0.2em}{} ??% \egroup% }% \def\mhchem@cf@i{% % % %%% \ifx\mhchem@END\mhchem@cf@lookahead% \if -\mhchem@cf@state% \ifnum 4>\mhchem@option@version% \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup -}% \else% \if 0\mhchem@cf@startedWithBond% \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup -}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\sbond}% \fi% \fi% \fi% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \let\mhchem@cf@action\mhchem@gobble% \else\ifx\relax\mhchem@cf@lookahead% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifx\protect\mhchem@cf@lookahead% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% %%% \else% % % % % \if -\mhchem@cf@state% % \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\sbond}% \def\mhchem@cf@state{+}% \fi% \if s\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx \}\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx\bond\mhchem@cf@lookahead% \ifnum 2=\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{C}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \else\if =\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if ##\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% \def\mhchem@cf@state{c}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if ^\mhchem@cf@lookahead% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% \def\mhchem@cf@state{q}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if `\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{P}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \fi% \else\if ,\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{Q}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@amount}{{,}}}% \fi% \else\if .\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \fi% \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% \else\if -\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \def\mhchem@cf@startedWithBond{1}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% \fi% \else\if |\mhchem@cf@lookahead% \let\mhchem@cf@action\mhchem@cf@switchState% \else\if (\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if )\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if [\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if ]\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if *\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else\ifcat a\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \else\if\mhchem@lbracechar\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@amount}}% \fi% \else\if $\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendMath{\mhchem@cf@element}}% \else% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@appendMath{\mhchem@cf@amount}}% \fi% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if C\mhchem@cf@state% \if\mhchem@lbracechar\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \def\mhchem@cf@state{c}% \else\if c\mhchem@cf@state% \if\mhchem@lbracechar\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@continue}% \fi% \else\if 1\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx \}\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx\bond\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \ifnum 2=\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{C}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \else\if =\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if ##\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{c}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if ^\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{q}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if `\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{E}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \fi% \else\if ,\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{F}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@amount}{{,}}}% \fi% \else\if .\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \fi% \else\if |\mhchem@cf@lookahead% \PackageWarning{mhchem}{The symbol | is not allowed here}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if (\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if )\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if [\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if ]\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if *\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else\ifcat a\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \else\if\mhchem@lbracechar\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@amount}}% \fi% \else\if $\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendMath{\mhchem@cf@amount}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if a\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx \}\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx\bond\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \ifnum 2=\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{C}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \else\if =\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if ##\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{c}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if ^\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup ,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% \def\mhchem@cf@state{f}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if `\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{E}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \fi% \else\if ,\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@element}{,}}% \fi% \else\if .\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \fi% \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% \else\if -\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% \fi% \else\if |\mhchem@cf@lookahead% \PackageWarning{mhchem}{The symbol | is not allowed here}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if (\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if )\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if [\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if ]\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if *\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else\ifcat a\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@state{2}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \else\if\mhchem@lbracechar\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextGroupAsMath{% \mhchem@cf@element}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@element}}% \fi% \else\if $\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendMath{\mhchem@cf@element}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if 2\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx \}\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx\bond\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \ifnum 2=\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{C}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \else\if =\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if ##\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{c}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if ^\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup ,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% \def\mhchem@cf@state{f}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if `\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{E}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \fi% \else\if ,\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{F}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@amount}{,}}% \fi% \else\if .\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \fi% \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% \else\if -\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% \fi% \else\if |\mhchem@cf@lookahead% \PackageWarning{mhchem}{The symbol | is not allowed here}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if (\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if )\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if [\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if ]\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if *\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else\ifcat a\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \else\if\mhchem@lbracechar\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@element}}% \fi% \else\if $\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendMath{\mhchem@cf@element}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if e\mhchem@cf@state% \def\mhchem@cf@state{+}% \if $\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendMathAsGroup{\mhchem@cf@sup}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% \fi% \else\if f\mhchem@cf@state% \def\mhchem@cf@state{+}% \if $\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendMathAsGroup{\mhchem@cf@amount}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \fi% \else\if p\mhchem@cf@state% \def\mhchem@cf@state{*}% \if $\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendMathAsGroup{\mhchem@cf@presup}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@presup}}% \fi% \else\if q\mhchem@cf@state% \def\mhchem@cf@state{*}% \if $\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendMathAsGroup{\mhchem@cf@presub}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@presub}}% \fi% \else\if E\mhchem@cf@state% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{% \mhchem@cf@appendNextTokenAsMathrm{\mhchem@cf@sup}}% \else\if F\mhchem@cf@state% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{% \mhchem@cf@appendNextTokenAsMathrm{\mhchem@cf@amount}}% \else\if P\mhchem@cf@state% \def\mhchem@cf@state{*}% \def\mhchem@cf@action{% \mhchem@cf@appendNextTokenAsMathrm{\mhchem@cf@presup}}% \else\if Q\mhchem@cf@state% \def\mhchem@cf@state{*}% \def\mhchem@cf@action{% \mhchem@cf@appendNextTokenAsMathrm{\mhchem@cf@presub}}% \else\if +\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx \}\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx\bond\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \ifnum 2=\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{C}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \else\if =\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if ##\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{c}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if ^\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup ,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% \def\mhchem@cf@state{f}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if `\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{E}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \fi% \else\if ,\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{F}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@element}{,}}% \fi% \else\if .\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \fi% \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% \else\if -\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% \fi% \else\if |\mhchem@cf@lookahead% \PackageWarning{mhchem}{The symbol | is not allowed here}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if (\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if )\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if [\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if ]\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if *\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else\ifcat a\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% % \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\if\mhchem@lbracechar\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@element}}% \fi% \else\if $\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendMath{\mhchem@cf@element}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% . \else\if *\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifx \}\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifx\bond\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \ifnum 2=\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{C}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \else\if =\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if ##\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{c}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if ^\mhchem@cf@lookahead% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% \def\mhchem@cf@state{q}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if `\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{P}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \fi% \else\if ,\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@state{Q}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@element}{,}}% \fi% \else\if .\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \fi% \else\if |\mhchem@cf@lookahead% \PackageWarning{mhchem}{The symbol | is not allowed here}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if (\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if )\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if [\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if ]\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\if *\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% \else\ifcat a\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% % \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \else\if\mhchem@lbracechar\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@element}}% \else\if $\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendMath{\mhchem@cf@element}}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% . \else% \PackageWarning{mhchem}{Assertion failed: unknown internal state \mhchem@cf@state}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi% \mhchem@cf@action% }% %%% \def\mhchem@cf@continue{% \futurelet\mhchem@cf@lookahead\mhchem@cf@i% }% \def\mhchem@cf@gobbleNextToken#1{% \mhchem@cf@continue% }% \def\mhchem@cf@append#1#2#3{% %\showthe#1% #1=\expandafter{\the#1#2}% %\showthe#1% \mhchem@cf@continue% }% \def\mhchem@cf@appendExpand#1#2#3{% \edef\mhchem@cf@appendExpand@i{\noexpand\mhchem@cf@append\noexpand{#1}{#2}}% \mhchem@cf@appendExpand@i% }% \def\mhchem@cf@appendAndExecute#1#2#3#4{% #1=\expandafter{\the#1#2}% #3% \mhchem@cf@continue% }% \def\mhchem@cf@appendAndExecuteExpand#1#2#3#4{% \edef\mhchem@cf@appendExpand@i{\noexpand\mhchem@cf@appendAndExecute\noexpand{#1}{#2}{#3}}% \mhchem@cf@appendExpand@i% }% \def\mhchem@cf@appendNextGroup#1#2{% #1=\expandafter{\the#1{#2}}% \mhchem@cf@continue% } \def\mhchem@cf@appendNextGroupAsMath#1#2{% #1=\expandafter{\the#1{\text{\ensuremath{#2}}}}% \mhchem@cf@continue% } \def\mhchem@cf@appendNextToken#1#2{% %\showthe#1% #1=\expandafter{\the#1#2}% %\showthe#1% \mhchem@cf@continue% } \def\mhchem@cf@appendNextTokenAsMathrm#1#2{% #1=\expandafter{\the#1{\ensuremath{\mathrm{#2}}}}% \mhchem@cf@continue% } \def\mhchem@cf@appendMath#1#2#3${% #1=\expandafter{\the#1\text{\ensuremath{#3}}}% \mhchem@cf@continue% }% \def\mhchem@cf@appendMathAsGroup#1#2#3${% #1=\expandafter{\the#1{\text{\ensuremath{#3}}}}% \mhchem@cf@continue% }% \def\mhchem@cf@switchState#1#2|{% \ifthenelse{\equal{1}{#2}}{% if 1 \def\mhchem@cf@state{a}% switch to [a]element }{% \PackageWarning{mhchem}{Command |#2| unknown}% }% \mhchem@cf@continue% }% %%%%% \newtoks\mhchem@cf@element% \newtoks\mhchem@cf@amount% %\newtoks\mhchem@cf@sub% \newtoks\mhchem@cf@sup% \newtoks\mhchem@cf@presub% \newtoks\mhchem@cf@presup% \def\mhchem@cf@output{% % \if\mhchem@cf@state s% \else\if\mhchem@cf@state 1% \noexpand\mhchem@mathOrText{\noexpand\mhchem@cf@frac\the\mhchem@cf@amount/\noexpand\mhchem@END}% \else% \if\mhchem@option@usenonsimultaneoussubsuperscripts 0\relax% \noexpand\mhchem@chemfive% {\noexpand\mhchem@cf@replaceMath{\the\mhchem@cf@presup}}% {\noexpand\mhchem@cf@replaceMath{\the\mhchem@cf@presub}}% {\the\mhchem@cf@element}% {\noexpand\mhchem@cf@replaceMath{\the\mhchem@cf@amount}}% {\noexpand\mhchem@cf@replaceMathMinusDot{\the\mhchem@cf@sup}}% {}% \else% \noexpand\mhchem@chemfive% {\noexpand\mhchem@cf@replaceMath{\the\mhchem@cf@presup}}% {\noexpand\mhchem@cf@replaceMath{\the\mhchem@cf@presub}}% {\the\mhchem@cf@element}% {\noexpand\mhchem@cf@replaceMath{\the\mhchem@cf@amount}}% {}% {\noexpand\mhchem@cf@replaceMathMinusDot{\the\mhchem@cf@sup}}% \fi% \fi\fi%\fi% } \def\mhchem@cf@outputReset{% %\showthe\mhchem@cf@element% %\showthe\mhchem@cf@sup% % \mhchem@cf@element={}% \mhchem@cf@amount={}% \mhchem@cf@sup={}% \mhchem@cf@presub={}% \mhchem@cf@presup={}% } \def\mhchem@cf@outputAndReset#1{% \edef\mhchem@cf@outputAndReset@i{#1={\the#1\mhchem@cf@output}}% \mhchem@cf@outputAndReset@i% %\showthe#1% \mhchem@cf@outputReset% } %%% frac \def\mhchem@cf@frac#1/#2\mhchem@END{% \ifthenelse{\equal{#2}{}}{% #1\mhchem@option@skipAfterAmount% }{% \ensuremath{\mathchoice% {\textstyle% \frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% }% }% }% \def\mhchem@getfirstchar#1#2\mhchem@ENDgetfirstchar{#1} \def\mhchem@getlastchars#1#2\mhchem@ENDgetlastchars{#2} %%% replaceMath % % % \newtoks\mhchem@cf@replaceMath@result \newcommand\mhchem@cf@replaceMath[1]{% \mhchem@cf@replaceMath@result={}% \mhchem@cf@replaceMath@continue#1\mhchem@END% % \the\mhchem@cf@replaceMath@result% } \def\mhchem@cf@replaceMath@i{% \ifx\mhchem@END\mhchem@cf@replaceMath@lookahead% \let\mhchem@cf@replaceMath@action\mhchem@gobble% \else\if\mhchem@lbracechar\mhchem@cf@replaceMath@lookahead% \let\mhchem@cf@replaceMath@action\mhchem@cf@replaceMath@appendNextGroup% \else\if $\mhchem@cf@replaceMath@lookahead% \let\mhchem@cf@replaceMath@action\mhchem@cf@replaceMath@appendMath% \else% \let\mhchem@cf@replaceMath@action\mhchem@cf@replaceMath@appendNextToken% \fi\fi\fi% \mhchem@cf@replaceMath@action% } %%% \def\mhchem@cf@replaceMath@continue{% \futurelet\mhchem@cf@replaceMath@lookahead\mhchem@cf@replaceMath@i% } \def\mhchem@cf@replaceMath@appendNextGroup#1{% \mhchem@cf@replaceMath@result=\expandafter{\the\mhchem@cf@replaceMath@result{#1}}% \mhchem@cf@replaceMath@continue% } \def\mhchem@cf@replaceMath@appendNextToken#1{% \mhchem@cf@replaceMath@result=\expandafter{\the\mhchem@cf@replaceMath@result#1}% \mhchem@cf@replaceMath@continue% } \def\mhchem@cf@replaceMath@appendMath#1#2${% \mhchem@cf@replaceMath@result=\expandafter{\the\mhchem@cf@replaceMath@result\text{\ensuremath{#2}}}% \mhchem@cf@replaceMath@continue% }% %%% replaceMathMinusDot %%% %%% %%% %%% %%% \newtoks\mhchem@cf@replaceMathMinusDot@result \newcommand\mhchem@cf@replaceMathMinusDot[1]{% \mhchem@cf@replaceMathMinusDot@result={}% \mhchem@cf@replaceMathMinusDot@continue#1\mhchem@END% % \the\mhchem@cf@replaceMathMinusDot@result% } \def\mhchem@cf@replaceMathMinusDot@i{% \ifx\mhchem@END\mhchem@cf@replaceMathMinusDot@lookahead% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@gobble% \else\if -\mhchem@cf@replaceMathMinusDot@lookahead\relax% \def\mhchem@cf@replaceMathMinusDot@action{\mhchem@cf@replaceMathMinusDot@append{\mhchem@mathOrText@ii{-}{\mhchem@option@textminus}}}% \else\if .\mhchem@cf@replaceMathMinusDot@lookahead\relax% \def\mhchem@cf@replaceMathMinusDot@action{\mhchem@cf@replaceMathMinusDot@append{\ensuremath{\textbf{\fontfamily{cmr}\selectfont\textperiodcentered}}}}% \else\if\mhchem@lbracechar\mhchem@cf@replaceMathMinusDot@lookahead% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@cf@replaceMathMinusDot@appendNextGroup% \else\if $\mhchem@cf@replaceMathMinusDot@lookahead% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@cf@replaceMathMinusDot@appendMath% \else% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@cf@replaceMathMinusDot@appendNextToken% \fi\fi\fi\fi\fi% \mhchem@cf@replaceMathMinusDot@action% } %%% \def\mhchem@cf@replaceMathMinusDot@continue{% \futurelet\mhchem@cf@replaceMathMinusDot@lookahead\mhchem@cf@replaceMathMinusDot@i% } \def\mhchem@cf@replaceMathMinusDot@append#1#2{% \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result#1}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendNextGroup#1{% \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result{#1}}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendNextToken#1{% \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result#1}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendMath#1#2${% \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result\text{\ensuremath{#2}}}% \mhchem@cf@replaceMathMinusDot@continue% }% %%%%%%%%%%%%%%%%%%%%% %%% @chemfive %%% %%%%%%%%%%%%%%%%%%%%% %%% %%% %%% %%% %%% %%% %%% \newcommand*\mhchem@chemfive[6]{% {% \mhchem@prepostscript% [\mhchem@mathOrText{\smash[t]{2+}}]% {\mhchem@mathOrText{#1}}% {\mhchem@mathOrText{#2}}% {\mhchem@mathOrText@ii{\mhchem@option@mathFont{#3}}{\text{#3}}}% {\mhchem@mathOrText{#4}}% {\mhchem@mathOrText{#5}}% {\mhchem@mathOrText{#6}}% }% } %%% @prepostscript %%% %%% %%% %%% %%% %%% %%% \newlength\mhchem@prepostscript@tmp@i% \newlength\mhchem@prepostscript@tmp@ii% \newcommand*\mhchem@prepostscript[7][]{% \m@th% \ensuremath{% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#2#3$}}% \ifdim\mhchem@prepostscript@tmp@i>0pt% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{${}^{#2}$}}% [1] \setlength{\mhchem@prepostscript@tmp@ii}{\widthof{${}_{#3}$}}% [1] \ifdim\mhchem@prepostscript@tmp@i<\mhchem@prepostscript@tmp@ii% \setlength{\mhchem@prepostscript@tmp@i}{\mhchem@prepostscript@tmp@ii}\fi% [1] \vphantom{#4}% [2] {}% ^{% \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% [1] \vphantom{#6#7}% [2] \vphantom{#1}% [4] #2% }% [1] }% _{% \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% [1] \vphantom{#5}% [2] #3% }% [1] }% \mhchem@minispace% [3] \fi% #4% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#5#6$}}% \ifdim\mhchem@prepostscript@tmp@i>0pt% _{% \vphantom{#3}% [2] #5% }% ^{% \vphantom{#2#7}% [2] \vphantom{#1}% [4] #6 }% \fi% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#7$}}% \ifdim\mhchem@prepostscript@tmp@i>0pt% \mhchem@minispace% [3] {}% _{\vphantom{#3#5}}% [2] ^{% \vphantom{#2#6}% [2] \vphantom{#1}% [4] #7% }% \fi% }% % % % % % % % } %%% @mathbox %%% %%% \newcommand*\mhchem@mathbox[2][]{% \mathchoice% {\mhchem@mathbox@ii{\displaystyle}{#1}{#2}}% {\mhchem@mathbox@ii{\textstyle}{#1}{#2}}% {\mhchem@mathbox@ii{\scriptstyle}{#1}{#2}}% {\mhchem@mathbox@ii{\scriptscriptstyle}{#1}{#2}}}% \newlength\mhchem@mathbox@tmp@i \newlength\mhchem@mathbox@tmp@ii \newcommand*\mhchem@mathbox@ii[3]{% \setlength{\mhchem@mathbox@tmp@i}{\widthof{\ensuremath{#1#2}}}% \setlength{\mhchem@mathbox@tmp@ii}{\widthof{\ensuremath{#1#3}}}% \ifdim\mhchem@mathbox@tmp@i<\mhchem@mathbox@tmp@ii% \mhchem@mathbox@i{#3}% \else% \makebox[\mhchem@mathbox@tmp@i]{\ensuremath{#1#3}}% \fi} \newcommand*\mhchem@mathbox@i[1]{\mathchoice% {\mbox{\ensuremath{\displaystyle#1}}}% {\mbox{\ensuremath{\textstyle#1}}}% {\mbox{\ensuremath{\scriptstyle#1}}}% {\mbox{\ensuremath{\scriptscriptstyle#1}}}} %%% @mathboxright \newcommand*\mhchem@mathboxright[2]{\mathchoice% {\makebox[#1][r]{\ensuremath{\displaystyle#2}}}% {\makebox[#1][r]{\ensuremath{\textstyle#2}}}% {\makebox[#1][r]{\ensuremath{\scriptstyle#2}}}% {\makebox[#1][r]{\ensuremath{\scriptscriptstyle#2}}}} %%% @minispace %%% %%% \newlength\mhchem@minispace@tmp \newcommand*\mhchem@minispace{% \setlength{\mhchem@minispace@tmp}{0pt-\widthof{${}^8_8$}+% \widthof{$\text{C}^8_8$}-\widthof{$\text{C}^{}_{}$}}% [3] \kern\mhchem@minispace@tmp% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% Package Options %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\mhchem@option@version{0} \define@key{mhchem}{version}{\def\mhchem@option@version{#1}} \def\mhchem@option@mathFont{\mathrm} \def\mhchem@option@textFont{} \define@key{mhchem}{textfontcommand}{\def\mhchem@option@textFont{#1}} \define@key{mhchem}{textfontname}{\def\mhchem@option@textFont{\csname#1\endcsname}} \define@key{mhchem}{mathfontcommand}{\def\mhchem@option@mathFont{#1}} \define@key{mhchem}{mathfontname}{\def\mhchem@option@mathFont{\csname#1\endcsname}} \define@key{mhchem}{font}{% \ifthenelse{\equal{sf}{#1}}{% \def\mhchem@option@textFont{\sffamily}% \def\mhchem@option@mathFont{\mathsf}% }{\ifthenelse{\equal{}{#1}}{% \def\mhchem@option@textFont{}% \def\mhchem@option@mathFont{\mathrm}% }{\PackageError{mhchem}{Font option `#1' unknown}}}% } % \def\mhchem@option@alwaystextmode{0}% \newlength\mhchem@option@minussidebearingleft \newlength\mhchem@option@minussidebearingright \setlength\mhchem@option@minussidebearingleft{0.06em} \setlength\mhchem@option@minussidebearingright{0.11em} \define@key{mhchem}{minus-sidebearing-left}{\setlength\mhchem@option@minussidebearingleft{#1}} \define@key{mhchem}{minus-sidebearing-right}{\setlength\mhchem@option@minussidebearingright{#1}} % % % % % % % % % % % % % % % % % Replicate layout of MS Word (superscript after subscript, not over) \def\mhchem@option@usenonsimultaneoussubsuperscripts{0}% % There is no key defined for this option, as to promote good typographic conventions. \mhchem@definearrows{font} \define@key{mhchem}{arrows}{% \ifthenelse{\equal{pgf}{#1} \or \equal{pgf-filled}{#1}}{% \RequirePackage{pgf}% for finding the tikz package more easily \RequirePackage{tikz}% }{}% \mhchem@definearrows{#1}% } \def\mhchem@option@skipAfterAmount{\,} \define@key{mhchem}{skip-after-amount}{\def\mhchem@option@skipAfterAmount{#1}\def\mhchem@option@skipAfterFracAmount{#1}} \def\mhchem@option@skipAfterFracAmount{\,} \define@key{mhchem}{skip-after-frac-amount}{\def\mhchem@option@skipAfterFracAmount{#1}} % \def\mhchem@option@textminus{--} \define@key{mhchem}{textminus}{\def\mhchem@option@textminus{#1}} % \def\mhchem@option@textcdot{\cdot} \define@key{mhchem}{textcdot}{\def\mhchem@option@textcdot{#1}} % %%% begin: standard keyval handling as in many other packages \def\ProcessOptionsWithKV#1{% \let\@tempc\relax% \let\mhchem@tempa\@empty% \@for\CurrentOption:=\@classoptionslist\do{% \@ifundefined{KV@#1@\CurrentOption}% {}% {% \edef\mhchem@tempa{\mhchem@tempa,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption% \@unusedoptionlist\@unusedoptionlist% }% }% \edef\mhchem@tempa{% \noexpand\setkeys{#1}{% \mhchem@tempa\@ptionlist{\@currname.\@currext}% }% }% \mhchem@tempa% \let\CurrentOption\@empty% \AtEndOfPackage{\let\@unprocessedoptions\relax}% } \ProcessOptionsWithKV{mhchem}\relax %%% end: \define@key{mhchem}{arrows}{\mhchem@definearrows{#1}}% \newcommand*\mhchemoptions[1]{\setkeys{mhchem}{#1}} \ifnum 0=\mhchem@option@version% \PackageWarningNoLine{mhchem}{% You did not specify a 'version' option for the mhchem\MessageBreak package. If you are about to create a new document,\MessageBreak please write \string\usepackage[version=3]{mhchem} in your preamble in\MessageBreak order to use the most recent version of mhchem}% \def\mhchem@option@version{3}% \else\ifnum 4=\mhchem@option@version% \PackageWarningNoLine{mhchem}{% You are using version 3.09 of mhchem. You entered\MessageBreak the parameter version=4. This means, you are using\MessageBreak some beta features of mhchem that are subject\MessageBreak to change without notice}% \fi\fi% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% misc %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifnum 4>\mhchem@option@version \newcommand*\mhchem@cmath[1]{\ensuremath{\text{\ensuremath{#1}}}}% \newcommand*\cmath[1]{\mhchem@cmath{#1}} \newcommand*\cf[2][]{\mhchem@cf[#1]{#2}} \fi % % % % % % % % % % % % % % % % % \def\mhchem@END{} \def\mhchem@macro{} \def\mhchem@empty{} % \edef\mhchem@lbracechar{\string{} %} \def\mhchem@gobble#1{}% % %