%% mhchem.sty %% Copyright 2004-2013 Martin Hensel % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License version 1.3c % which is included as lppl-1-3c.txt. % % This work has the LPPL maintenance status "maintained". % The Current Maintainer of this work is Martin Hensel. % % ( 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 all files listed in manifest.txt. % % \ProvidesPackage{mhchem}[2013/06/17 v3.12 for typesetting chemical formulae] \RequirePackage{ifthen} \RequirePackage{calc}[1998/07/07] \RequirePackage{twoopt} \RequirePackage{amsmath} \RequirePackage{keyval} \RequirePackage{graphics} \RequirePackage{pdftexcmds} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% misc %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareMathSymbol{\mhchem@hyphen}{0}{operators}{45} \def\mhchem@END{\mhchem@END} \def\mhchem@macro{} \def\mhchem@empty{} \def\mhchem@gobble#1{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \cee %%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand*{\cee}[1]{% \def\mhchem@ce@out{}% {\mhchem@cee@i#1\mhchem@empty\\\mhchem@END\mhchem@ENDEND}% \ensuremath{% \mhchem@ce@out% }% }% \def\mhchem@cee@i#1\\#2#3\mhchem@ENDEND{% \ifx\mhchem@END#2% \mhchem@cee@ii#1&\mhchem@END\mhchem@ENDEND% \else% \mhchem@cee@ii#1&\mhchem@END\mhchem@ENDEND% \g@addto@macro\mhchem@ce@out{\\}% \mhchem@cee@i#2#3\mhchem@ENDEND% \fi% } \long\def\mhchem@cee@ii#1#3\mhchem@ENDEND{% \ifx\mhchem@END#2% \g@addto@macro\mhchem@ce@out{\ce{#1}}% \else% \g@addto@macro\mhchem@ce@out{\ce{#1}}% \g@addto@macro\mhchem@ce@out{&}% \mhchem@cee@ii#2#3\mhchem@ENDEND% \fi% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% global helpers %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\mhchem@appendToks#1#2{% #1=\expandafter{\the#1#2}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \ce %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareRobustCommand\ce[1]{\mhchem@ce{#1}} \edef\mhchem@char@lbrace{\string{} %} \begingroup% \catcode`\-=12% \gdef\mhchem@char@hyphen@other{-}% \catcode`\-=\active% \gdef\mhchem@char@hyphen@active{-}% \catcode`\<=12% \gdef\mhchem@char@lt@other{<}% \catcode`\<=\active% \gdef\mhchem@char@lt@active{<}% \catcode`\>=12% \gdef\mhchem@char@gt@other{>}% \catcode`\>=\active% \gdef\mhchem@char@gt@active{>}% \catcode`\^=7% \gdef\mhchem@char@caret@super{^}% \catcode`\^=\active% \gdef\mhchem@char@caret@active{^}% \catcode`\==12% \gdef\mhchem@char@equal@other{=}% \catcode`\==\active% \gdef\mhchem@char@equal@active{=}% \endgroup% \newtoks\mhchem@ce@result% \newtoks\mhchem@ce@part% \newcommand*\mhchem@ce[1]{% \bgroup% \def\mhchem@ce@state{s}% \chardef\mhchem@ce@substate=0\relax% \mhchem@ce@result={}% \mhchem@ce@part={}% \mhchem@ce@continue#1\mhchem@END% \ifnum 1<\mhchem@option@version% \the\mhchem@ce@result% \else% \ensuremath{\the\mhchem@ce@result}% \fi% \egroup% } \def\mhchem@ce@i{% \ifx\mhchem@END\mhchem@ce@lookahead% \mhchem@ce@output% \let\mhchem@ce@action\mhchem@gobble% \else\if\space\noexpand\mhchem@ce@lookahead% \if s\mhchem@ce@state% \else% \mhchem@ce@output% \mhchem@ce@part={}% \def\mhchem@ce@state{s}% \fi% \let\mhchem@ce@action\mhchem@ce@gobbleNextSpace% \else\if\mhchem@char@lbrace\noexpand\mhchem@ce@lookahead% \if s\mhchem@ce@state% \def\mhchem@ce@state{c}% \fi% \def\mhchem@ce@action{\mhchem@ce@appendNextGroup{\mhchem@ce@part}}% \else% \if s\mhchem@ce@state% \expandafter\ifx\mhchem@char@hyphen@other\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=1\relax% \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=1\relax% \else\expandafter\ifx\mhchem@char@lt@other\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=7\relax% \else\expandafter\ifx\mhchem@char@lt@active\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=7\relax% \else\if +\noexpand\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=50\relax% \else\if (\noexpand\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=101\relax% \else\if v\noexpand\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=106\relax% \else\expandafter\ifx\mhchem@char@caret@super\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=107\relax% \else\expandafter\ifx\mhchem@char@caret@active\mhchem@ce@lookahead% \def\mhchem@ce@state{a}% \chardef\mhchem@ce@substate=107\relax% \else% \def\mhchem@ce@state{c}% \fi\fi\fi\fi\fi\fi\fi\fi\fi% \def\mhchem@ce@action{\mhchem@ce@appendNextToken{\mhchem@ce@part}}% \else\if c\mhchem@ce@state% \def\mhchem@ce@action{\mhchem@ce@appendNextToken{\mhchem@ce@part}}% \else\if a\mhchem@ce@state% \def\mhchem@ce@action{\mhchem@ce@appendNextToken{\mhchem@ce@part}}% \ifnum 1=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=2\relax% \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=2\relax% \else% \def\mhchem@ce@state{c}% \fi\fi% \else\ifnum 2=\mhchem@ce@substate\relax% \mhchem@ce@part={}% \chardef\mhchem@ce@substate=3\relax% \else\ifnum 7=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@hyphen@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=8\relax% \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=8\relax% \else\expandafter\ifx\mhchem@char@equal@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=19\relax% \else\expandafter\ifx\mhchem@char@equal@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=19\relax% \else\expandafter\ifx\mhchem@char@lt@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=24\relax% \else\expandafter\ifx\mhchem@char@lt@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=24\relax% \else% \def\mhchem@ce@state{c}% \fi\fi\fi\fi\fi\fi% \else\ifnum 8=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=10\relax% \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=10\relax% \else\expandafter\ifx\mhchem@char@hyphen@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=12\relax% \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=12\relax% \else% \mhchem@ce@part={}% \chardef\mhchem@ce@substate=9\relax% \fi\fi\fi\fi% \else\ifnum 10=\mhchem@ce@substate\relax% \mhchem@ce@part={}% \chardef\mhchem@ce@substate=11\relax% \else\ifnum 12=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=13\relax% \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=13\relax% \else% \def\mhchem@ce@state{c}% \fi\fi% \else\ifnum 13=\mhchem@ce@substate\relax% \mhchem@ce@part={}% \chardef\mhchem@ce@substate=14\relax% \else\ifnum 19=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=20\relax% \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=20\relax% \else% \def\mhchem@ce@state{c}% \fi\fi% \else\ifnum 20=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=22\relax% \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=22\relax% \else% \mhchem@ce@part={}% \chardef\mhchem@ce@substate=21\relax% \fi\fi% \else\ifnum 22=\mhchem@ce@substate\relax% \mhchem@ce@part={}% \chardef\mhchem@ce@substate=23\relax% \else\ifnum 24=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@equal@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=25\relax% \else\expandafter\ifx\mhchem@char@equal@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=25\relax% \else% \def\mhchem@ce@state{c}% \fi\fi% \else\ifnum 25=\mhchem@ce@substate\relax% \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=26\relax% \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=26\relax% \else% \def\mhchem@ce@state{c}% \fi\fi% \else\ifnum 26=\mhchem@ce@substate\relax% \mhchem@ce@part={}% \chardef\mhchem@ce@substate=27\relax% \else\ifnum 50=\mhchem@ce@substate\relax% \mhchem@ce@output% \mhchem@ce@part={}% \def\mhchem@ce@state{c}% \else\ifnum 101=\mhchem@ce@substate\relax% \if v\noexpand\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=102\relax% \else% \def\mhchem@ce@state{c}% \fi% \else\ifnum 102=\mhchem@ce@substate\relax% \if )\noexpand\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=103\relax% \else% \def\mhchem@ce@state{c}% \fi% \else\ifnum 103=\mhchem@ce@substate\relax% \def\mhchem@ce@state{c}% \else\ifnum 104=\mhchem@ce@substate\relax% \if )\noexpand\mhchem@ce@lookahead% \chardef\mhchem@ce@substate=105\relax% \else% \def\mhchem@ce@state{c}% \fi% \else\ifnum 105=\mhchem@ce@substate\relax% \def\mhchem@ce@state{c}% \else\ifnum 106=\mhchem@ce@substate\relax% \def\mhchem@ce@state{c}% \else\ifnum 107=\mhchem@ce@substate\relax% \def\mhchem@ce@state{c}% \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% \mhchem@ce@action% } \def\mhchem@ce@continue{% \futurelet\mhchem@ce@lookahead\mhchem@ce@i% }% \def\mhchem@ce@gobbleNextToken#1{% \mhchem@ce@continue% }% \def\mhchem@ce@gobbleNextSpace{% % thanks to de.comp.text.tex \def\mhchem@ce@gobbleNextSpace@i{% \mhchem@ce@continue}% \afterassignment\mhchem@ce@gobbleNextSpace@i% \let\mhchem@ce@gobbleNextSpace@ii= % The space is the trick! } \def\mhchem@ce@appendNextToken#1#2{% \mhchem@appendToks{#1}{#2}% \mhchem@ce@continue% } \def\mhchem@ce@appendNextGroup#1#2{% \mhchem@appendToks{#1}{{#2}}% \mhchem@ce@continue% } \def\mhchem@ce@output{% \if a\mhchem@ce@state% \ifnum 2=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@yields[][]}% \else\ifnum 3=\mhchem@ce@substate\relax% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@yields\the\mhchem@ce@part}% \else\ifnum 8=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@yieldsLeft[][]}% \else\ifnum 9=\mhchem@ce@substate\relax% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@yieldsLeft\the\mhchem@ce@part}% \else\ifnum 10=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@mesomerism[][]}% \else\ifnum 11=\mhchem@ce@substate\relax% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@mesomerism\the\mhchem@ce@part}% \else\ifnum 13=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@yieldsLeftRight[][]}% \else\ifnum 14=\mhchem@ce@substate\relax% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@yieldsLeftRight\the\mhchem@ce@part}% \else\ifnum 20=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@equilibrium[][]}% \else\ifnum 21=\mhchem@ce@substate\relax% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@equilibrium\the\mhchem@ce@part}% \else\ifnum 22=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@equilibriumRight[][]}% \else\ifnum 23=\mhchem@ce@substate\relax% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@equilibriumRight\the\mhchem@ce@part}% \else\ifnum 26=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@equilibriumLeft[][]}% \else\ifnum 27=\mhchem@ce@substate\relax% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@equilibriumLeft\the\mhchem@ce@part}% \else\ifnum 50=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}+{}}}% \else\ifnum 103=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\downarrow}{}}}% \else\ifnum 105=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\uparrow}{}}}% \else\ifnum 106=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\downarrow}{}}}% \else\ifnum 107=\mhchem@ce@substate\relax% \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\uparrow}{}}}% \else% \def\mhchem@ce@state{c}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi% \if c\mhchem@ce@state% \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@cf\expandafter{\the\mhchem@ce@part}}% \fi% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% arrows %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\mhchem@arrow@minlength{{2em}}% %%% Deployment of arrow macros \newtoks\mhchem@arrow@deployType \def\mhchem@arrow@deploy#1{% \if [#1% \ifnum 3<\mhchem@option@version% \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType T\endcsname[}% \else% \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType M\endcsname[}% \fi% \else\if T#1% \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType T\endcsname}% \else\if C#1% \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType C\endcsname}% \else% \def\mhchem@arrow@deploy@action{}% \PackageError{mhchem}{Arrow type not supported}% \fi\fi\fi% \mhchem@arrow@deploy@action% } \def\mhchem@arrow@yields{% \mhchem@arrow@deployType={yields}% \futurelet\lookahead\mhchem@arrow@deploy% } \def\mhchem@arrow@yieldsLeft{% \mhchem@arrow@deployType={yieldsLeft}% \futurelet\lookahead\mhchem@arrow@deploy% } \def\mhchem@arrow@yieldsLeftRight{% \mhchem@arrow@deployType={yieldsLeftRight}% \futurelet\lookahead\mhchem@arrow@deploy% } \def\mhchem@arrow@mesomerism{% \mhchem@arrow@deployType={mesomerism}% \futurelet\lookahead\mhchem@arrow@deploy% } \def\mhchem@arrow@equilibrium{% \mhchem@arrow@deployType={equilibrium}% \futurelet\lookahead\mhchem@arrow@deploy% } \def\mhchem@arrow@equilibriumRight{% \mhchem@arrow@deployType={equilibriumRight}% \futurelet\lookahead\mhchem@arrow@deploy% } \def\mhchem@arrow@equilibriumLeft{% \mhchem@arrow@deployType={equilibriumLeft}% \futurelet\lookahead\mhchem@arrow@deploy% } %%% Definition of arrows (with math text) for font/pgf/pgf-filled \newcommandtwoopt*\mhchem@arrow@yieldsM[2][][]{} \newcommandtwoopt*\mhchem@arrow@yieldsLeftM[2][][]{} \newcommandtwoopt*\mhchem@arrow@yieldsLeftRightM[2][][]{} \newcommandtwoopt*\mhchem@arrow@mesomerismM[2][][]{} \newcommandtwoopt*\mhchem@arrow@equilibriumM[2][][]{} \newcommandtwoopt*\mhchem@arrow@equilibriumRightM[2][][]{} \newcommandtwoopt*\mhchem@arrow@equilibriumLeftM[2][][]{} \newcommand\mhchem@definearrows[1]{% %%% font \ifthenelse{\equal{#1}{font}}{% \renewcommandtwoopt*\mhchem@arrow@yieldsM[2][][]{% \ensuremath{{}\mhchem@ext@arrow{5}{9}{##1}{5}{9}{##2}{\mhchem@arrow@minlength}{\rightarrowfill@}{}}}% \renewcommandtwoopt*\mhchem@arrow@yieldsLeftM[2][][]{% \ensuremath{{}\mhchem@ext@arrow{9}{5}{##1}{9}{5}{##2}{\mhchem@arrow@minlength}{\leftarrowfill@}{}}}% \renewcommandtwoopt*\mhchem@arrow@yieldsLeftRightM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##2}% {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\rightarrowfill@}$}}}% {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{9}{\hphantom{##2}}{\mhchem@arrow@minlength}{\rightarrowfill@}$}}}% \@ifempty{##1}% {\raisebox{-.44ex}{$\mhchem@ext@arrow{9}{9}{}{9}{9}{##2}{\mhchem@arrow@minlength}{\leftarrowfill@}$}}% {\raisebox{-.44ex}{$\mhchem@ext@arrow{9}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\leftarrowfill@}$}}% }{}}}% \renewcommandtwoopt*\mhchem@arrow@mesomerismM[2][][]{% \ensuremath{{}\mhchem@ext@arrow{9}{9}{##1}{9}{9}{##2}{\mhchem@arrow@minlength}{\leftrightarrowfill@}{}}}% \renewcommandtwoopt*\mhchem@arrow@equilibriumM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##2}% {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow{5}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}}% {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{5}{\hphantom{##2}}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}}% \@ifempty{##1}% {\raisebox{-.22ex}{$\mhchem@ext@arrow{9}{9}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% {\raisebox{-.22ex}{$\mhchem@ext@arrow{5}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% }{}}}% \renewcommandtwoopt*\mhchem@arrow@equilibriumRightM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##1}{% if only above, center optically; if above AND below, center exactly to avoid misalignment \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondownfill@}$}}% \@ifempty{##2}% {\raisebox{.22ex}{$\mhchem@ext@arrow{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% {\raisebox{.22ex}{$\mhchem@ext@arrow{0}{0}{}{9}{5}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% }{% \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow{5}{9}{\hphantom{##1}\kern-1em}{9}{9}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondownfill@}$}}% \@ifempty{##2}% {\raisebox{.22ex}{$\mhchem@ext@arrow{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% {\raisebox{.22ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{9}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% }% }{}}}% \renewcommandtwoopt*\mhchem@arrow@equilibriumLeftM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##2}{% \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonupfill@}$}}% \@ifempty{##1}% {\raisebox{-.22ex}{$\mhchem@ext@arrow{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% {\raisebox{-.22ex}{$\mhchem@ext@arrow{5}{9}{\hphantom{##1}\kern1em}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% }{% \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow{9}{9}{##1}{5}{9}{\hphantom{##2}\kern-1em}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonupfill@}$}}% \@ifempty{##1}% {\raisebox{-.22ex}{$\mhchem@ext@arrow{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% {\raisebox{-.22ex}{$\mhchem@ext@arrow{9}{9}{\hphantom{##1}\kern1em}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% }% }{}}}% %%% pgf }{\ifthenelse{\equal{#1}{pgf} \or \equal{#1}{pgf-filled}}{% \renewcommandtwoopt*\mhchem@arrow@yieldsM[2][][]{% \ensuremath{{}\mhchem@ext@arrow@pgf{5}{9}{##1}{5}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@rightarrow@pgf}{}}}% \renewcommandtwoopt*\mhchem@arrow@yieldsLeftM[2][][]{% \ensuremath{{}\mhchem@ext@arrow@pgf{9}{5}{##1}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftarrow@pgf}{}}}% \renewcommandtwoopt*\mhchem@arrow@yieldsLeftRightM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##2}% {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\mhchem@rightarrow@pgf}$}}}% {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{\hphantom{##2}}{\mhchem@arrow@minlength}{\mhchem@rightarrow@pgf}$}}}% \@ifempty{##1}% {\raisebox{-.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftarrow@pgf}$}}% {\raisebox{-.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftarrow@pgf}$}}% }{}}}% \renewcommandtwoopt*\mhchem@arrow@mesomerismM[2][][]{% \ensuremath{{}\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftrightarrow@pgf}{}}}% \renewcommandtwoopt*\mhchem@arrow@equilibriumM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##2}% {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}}% {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{5}{\hphantom{##2}}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}}% \@ifempty{##1}% {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% }{}}}% \renewcommandtwoopt*\mhchem@arrow@equilibriumRightM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##1}{% if only above, center optically; if above AND below, center exactly to avoid misalignment \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondown@pgf}$}}% \@ifempty{##2}% {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{9}{5}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% }{% \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{5}{9}{\hphantom{##1}\kern-1em}{9}{9}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondown@pgf}$}}% \@ifempty{##2}% {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% }% }{}}}% \renewcommandtwoopt*\mhchem@arrow@equilibriumLeftM[2][][]{% \ensuremath{{}\mathrel{% \@ifempty{##2}{% \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonup@pgf}$}}% \@ifempty{##1}% {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{\hphantom{##1}\kern1em}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% }{% \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{9}{9}{##1}{5}{9}{\hphantom{##2}\kern-1em}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonup@pgf}$}}% \@ifempty{##1}% {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{\hphantom{##1}\kern1em}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% }% }{}}}% \ifthenelse{\equal{#1}{pgf}}{% \let\mhchem@rightarrow@pgf\mhchem@rightarrow@pgfopen% \let\mhchem@leftarrow@pgf\mhchem@leftarrow@pgfopen% \let\mhchem@leftrightarrow@pgf\mhchem@leftrightarrow@pgfopen% \let\mhchem@rightharpoonup@pgf\mhchem@rightharpoonup@pgfopen% \let\mhchem@leftharpoondown@pgf\mhchem@leftharpoondown@pgfopen% }{% \let\mhchem@rightarrow@pgf\mhchem@rightarrow@pgffilled% \let\mhchem@leftarrow@pgf\mhchem@leftarrow@pgffilled% \let\mhchem@leftrightarrow@pgf\mhchem@leftrightarrow@pgffilled% \let\mhchem@rightharpoonup@pgf\mhchem@rightharpoonup@pgffilled% \let\mhchem@leftharpoondown@pgf\mhchem@leftharpoondown@pgffilled% }% }{% \PackageError{mhchem}{The option font=#1 is not supported}% }}% } %%% Arrow compositions with text or chemistry \newtoks\mhchem@arrow@params% \def\mhchem@arrow@setParamsT#1#2{% \mhchem@arrow@params={}% \@ifnotempty{#1}{\mhchem@appendToks{\mhchem@arrow@params}{[\text{#1}]}}% \@ifnotempty{#2}{\mhchem@appendToks{\mhchem@arrow@params}{[\text{#2}]}}% }% \def\mhchem@arrow@setParamsC#1#2{% \mhchem@arrow@params={}% \@ifnotempty{#1}{\mhchem@appendToks{\mhchem@arrow@params}{[\ce{#1}]}}% \@ifnotempty{#2}{\mhchem@appendToks{\mhchem@arrow@params}{[\ce{#2}]}}% }% \newcommandtwoopt*\mhchem@arrow@yieldsT[2][][]{% \mhchem@arrow@setParamsT{#1}{#2}% \expandafter\mhchem@arrow@yieldsM\the\mhchem@arrow@params}% \newcommandtwoopt*\mhchem@arrow@yieldsC[2][][]{% \mhchem@arrow@setParamsC{#1}{#2}% \expandafter\mhchem@arrow@yieldsM\the\mhchem@arrow@params}% \newcommandtwoopt*\mhchem@arrow@yieldsLeftT[2][][]{% \mhchem@arrow@setParamsT{#1}{#2}% \expandafter\mhchem@arrow@yieldsLeftM\the\mhchem@arrow@params}% \newcommandtwoopt*\mhchem@arrow@yieldsLeftC[2][][]{% \mhchem@arrow@setParamsC{#1}{#2}% \expandafter\mhchem@arrow@yieldsLeftM\the\mhchem@arrow@params}% \newcommandtwoopt*\mhchem@arrow@yieldsLeftRightT[2][][]{% \mhchem@arrow@setParamsT{#1}{#2}% \expandafter\mhchem@arrow@yieldsLeftRightM\the\mhchem@arrow@params}% \newcommandtwoopt*\mhchem@arrow@yieldsLeftRightC[2][][]{% \mhchem@arrow@setParamsC{#1}{#2}% \expandafter\mhchem@arrow@yieldsLeftRightM\the\mhchem@arrow@params}% \newcommandtwoopt*\mhchem@arrow@mesomerismT[2][][]{% \mhchem@arrow@setParamsT{#1}{#2}% \expandafter\mhchem@arrow@mesomerismM\the\mhchem@arrow@params}% \newcommandtwoopt*\mhchem@arrow@mesomerismC[2][][]{% \mhchem@arrow@setParamsC{#1}{#2}% \expandafter\mhchem@arrow@mesomerismM\the\mhchem@arrow@params}% \newcommandtwoopt*{\mhchem@arrow@equilibriumT}[2][][]{% \mhchem@arrow@setParamsT{#1}{#2}% \expandafter\mhchem@arrow@equilibriumM\the\mhchem@arrow@params}% \newcommandtwoopt*{\mhchem@arrow@equilibriumC}[2][][]{% \mhchem@arrow@setParamsC{#1}{#2}% \expandafter\mhchem@arrow@equilibriumM\the\mhchem@arrow@params}% \newcommandtwoopt*{\mhchem@arrow@equilibriumRightT}[2][][]{% \mhchem@arrow@setParamsT{#1}{#2}% \expandafter\mhchem@arrow@equilibriumRightM\the\mhchem@arrow@params}% \newcommandtwoopt*{\mhchem@arrow@equilibriumRightC}[2][][]{% \mhchem@arrow@setParamsC{#1}{#2}% \expandafter\mhchem@arrow@equilibriumRightM\the\mhchem@arrow@params}% \newcommandtwoopt*{\mhchem@arrow@equilibriumLeftT}[2][][]{% \mhchem@arrow@setParamsT{#1}{#2}% \expandafter\mhchem@arrow@equilibriumLeftM\the\mhchem@arrow@params}% \newcommandtwoopt*{\mhchem@arrow@equilibriumLeftC}[2][][]{% \mhchem@arrow@setParamsC{#1}{#2}% \expandafter\mhchem@arrow@equilibriumLeftM\the\mhchem@arrow@params}% %%% Font arrows \def\mhchem@ext@arrow#1#2#3#4#5#6#7#8{% adaption of amsmath's ext@arrow \mathrel{% \mathop{\makebox[#7]{#8\displaystyle}}% \limits% \@ifnotempty{#3}{^{\mkern#1mu#3\mkern#2mu}}% \@ifnotempty{#6}{_{\mkern#4mu#6\mkern#5mu}}% }% } \def\mhchem@rightharpoonupfill@{\arrowfill@\relbar\relbar\rightharpoonup} \def\mhchem@leftharpoondownfill@{\arrowfill@\leftharpoondown\relbar\relbar} %%% pgf arrows \newlength{\mhchem@arrowlength@pgf} \def\mhchem@ext@arrow@pgf#1#2#3#4#5#6#7#8{% \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% \mhchem@ext@arrow{#1}{#2}{#3}{#4}{#5}{#6}{#7}{\rightarrowfill@}% }}}% \mathrel{% \mathop{\kern0.7pt#8{\mhchem@arrowlength@pgf-1.8pt}\kern0.7pt}% \limits% \@ifnotempty{#3}{^{\mkern#1mu#3\mkern#2mu}}% \@ifnotempty{#6}{_{\mkern#4mu#6\mkern#5mu}}% }% }% \newcommand*\mhchem@rightarrow@pgfopen[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@pgfopen[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@pgfopen[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@rightharpoonup@pgfopen[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); \end{tikzpicture}% }% \newcommand*\mhchem@leftharpoondown@pgfopen[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) -- ++(#1,0cm); \end{tikzpicture}% }% \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] (0cm,0.575ex) -- ++(0.6ex,0.2ex) -- ++(-0.15ex,-0.2ex) -- ++(+0.15ex,-0.2ex) -- cycle; \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@rightharpoonup@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.25ex) -- ++(0.15ex,-0.25ex) -- cycle; \end{tikzpicture}% }% \newcommand*\mhchem@leftharpoondown@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.25ex) -- ++(-0.15ex,0.25ex) -- cycle; \end{tikzpicture}% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% 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{% \ifnum\pdf@strcmp{#1}{-}=0% \sbond% \else\ifnum\pdf@strcmp{#1}{=}=0% \dbond% \else\ifnum\pdf@strcmp{#1}{##}=0% \tbond% \else\ifnum\pdf@strcmp{#1}{~}=0% \mhchem@setbondwidth% \mhchem@halfbond% \else\ifnum\pdf@strcmp{#1}{~-}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.2ex}{\mhchem@halfbond}}% \protect\raisebox{-.2ex}{\sbond}% \else\ifnum\pdf@strcmp{#1}{~--}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}}% \rlap{\sbond}% \protect\raisebox{-.4ex}{\sbond}% \else\ifnum\pdf@strcmp{#1}{~=}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}}% \rlap{\sbond}% \protect\raisebox{-.4ex}{\sbond}% \else\ifnum\pdf@strcmp{#1}{-~-}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\sbond}}% \rlap{\mhchem@halfbond}% \protect\raisebox{-.4ex}{\sbond}% \else\ifnum\pdf@strcmp{#1}{...}=0% {\cdot}{\cdot}{\cdot}% \else\ifnum\pdf@strcmp{#1}{....}=0% {\cdot}{\cdot}{\cdot}{\cdot}% \else\ifnum\pdf@strcmp{#1}{->}=0% {\rightarrow}% \else\ifnum\pdf@strcmp{#1}{<-}=0% {\leftarrow}% \else \PackageError{mhchem}{Unknown bond type in \string\bond (#1)}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\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}}% }% \egroup% }% \def\mhchem@cf@i{% \ifx\mhchem@END\mhchem@cf@lookahead% \if -\mhchem@cf@state% \ifnum 4>\mhchem@option@version% \mhchem@appendToks{\mhchem@cf@sup}{-}% \else% \if 0\mhchem@cf@startedWithBond% \mhchem@appendToks{\mhchem@cf@sup}{-}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\sbond}% \fi% \fi% \else\if 1\mhchem@cf@state% \def\mhchem@cf@state{9}% \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@appendToks{\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\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\dbond}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\dbond}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if ##\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\tbond}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@active\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\expandafter\ifx\mhchem@char@hyphen@other\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\expandafter\ifx\mhchem@char@hyphen@active\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\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% \def\mhchem@cf@state{c}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \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@char@lbrace\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\fi\fi% \else\if C\mhchem@cf@state% \if\mhchem@char@lbrace\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@char@lbrace\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\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\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@appendToks{\mhchem@cf@result}{\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@active\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% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@amount}{{,}}}% \else\if .\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \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\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\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@char@lbrace\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\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\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\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@appendToks{\mhchem@cf@result}{\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@appendToks{\mhchem@cf@sup}{,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@appendToks{\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\expandafter\ifx\mhchem@char@hyphen@other\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\expandafter\ifx\mhchem@char@hyphen@active\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\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\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@char@lbrace\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\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\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\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@appendToks{\mhchem@cf@result}{\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@appendToks{\mhchem@cf@sup}{,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@appendToks{\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\expandafter\ifx\mhchem@char@hyphen@other\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\expandafter\ifx\mhchem@char@hyphen@active\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\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\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@char@lbrace\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\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\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\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@appendToks{\mhchem@cf@result}{\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@appendToks{\mhchem@cf@sup}{,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% \mhchem@appendToks{\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\expandafter\ifx\mhchem@char@hyphen@other\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\expandafter\ifx\mhchem@char@hyphen@active\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\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\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@char@lbrace\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\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\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\mhchem@cf@result}{\dbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \mhchem@appendToks{\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@appendToks{\mhchem@cf@result}{\tbond}% \def\mhchem@cf@state{+}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\expandafter\ifx\mhchem@char@caret@active\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\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\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@char@lbrace\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\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@appendNextToken#1#2{% \mhchem@appendToks{#1}{#2}% \mhchem@cf@continue% } \def\mhchem@cf@appendNextTokenAsMathrm#1#2{% \mhchem@appendToks{#1}{\ensuremath{\mathrm{#2}}}% \mhchem@cf@continue% } \def\mhchem@cf@appendNextGroup#1#2{% \mhchem@appendToks{#1}{{#2}}% \mhchem@cf@continue% } \def\mhchem@cf@appendNextGroupAsMath#1#2{% \mhchem@appendToks{#1}{\text{\ensuremath{#2}}}% \mhchem@cf@continue% } \def\mhchem@cf@append#1#2#3{% \mhchem@appendToks{#1}{#2}% \mhchem@cf@continue% }% \def\mhchem@cf@appendMath#1#2#3${% \mhchem@appendToks{#1}{\text{\ensuremath{#3}}}% \mhchem@cf@continue% }% \def\mhchem@cf@appendMathAsGroup#1#2#3${% \mhchem@appendToks{#1}{{\text{\ensuremath{#3}}}}% \mhchem@cf@continue% }% \def\mhchem@cf@switchState#1#2|{% \ifthenelse{\equal{1}{#2}}{% \def\mhchem@cf@state{a}% }{% \PackageWarning{mhchem}{Command |#2| unknown}% }% \mhchem@cf@continue% }% \newtoks\mhchem@cf@element% \newtoks\mhchem@cf@amount% \newtoks\mhchem@cf@sup% \newtoks\mhchem@cf@presub% \newtoks\mhchem@cf@presup% \def\mhchem@cf@output{% \if s\mhchem@cf@state% \else\if 1\mhchem@cf@state% \noexpand\mhchem@mathOrText{\noexpand\mhchem@cf@frac\the\mhchem@cf@amount/\noexpand\mhchem@END{\mhchem@option@skipAfterFracAmount}}% \else\if 9\mhchem@cf@state% \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{% \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% \mhchem@cf@outputReset% } %%% frac \def\mhchem@cf@frac#1/#2\mhchem@END#3{% \ifthenelse{\equal{#2}{}}{% #1#3% }{% \ensuremath{\mathchoice% {\textstyle% \frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% }% }% }% \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@char@lbrace\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@appendToks{\mhchem@cf@replaceMath@result}{{#1}}% \mhchem@cf@replaceMath@continue% } \def\mhchem@cf@replaceMath@appendNextToken#1{% \mhchem@appendToks{\mhchem@cf@replaceMath@result}{#1}% \mhchem@cf@replaceMath@continue% } \def\mhchem@cf@replaceMath@appendMath#1#2${% \mhchem@appendToks{\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\expandafter\ifx\mhchem@char@hyphen@other\mhchem@cf@replaceMathMinusDot@lookahead\relax% \def\mhchem@cf@replaceMathMinusDot@action{\mhchem@cf@replaceMathMinusDot@append{\mhchem@mathOrText@ii{-}{\mhchem@option@textminus}}}% \else\expandafter\ifx\mhchem@char@hyphen@active\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@char@lbrace\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\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@appendToks{\mhchem@cf@replaceMathMinusDot@result}{#1}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendNextGroup#1{% \mhchem@appendToks{\mhchem@cf@replaceMathMinusDot@result}{{#1}}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendNextToken#1{% \mhchem@appendToks{\mhchem@cf@replaceMathMinusDot@result}{#1}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendMath#1#2${% \mhchem@appendToks{\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}$}}% \setlength{\mhchem@prepostscript@tmp@ii}{\widthof{${}_{#3}$}}% \ifdim\mhchem@prepostscript@tmp@i<\mhchem@prepostscript@tmp@ii% \setlength{\mhchem@prepostscript@tmp@i}{\mhchem@prepostscript@tmp@ii}\fi% \vphantom{#4}% {}% ^{% \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% \vphantom{#6#7}% \vphantom{#1}% #2% }% }% _{% \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% \vphantom{#5}% #3% }% }% \mhchem@minispace% \fi% #4% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#5#6$}}% \ifdim\mhchem@prepostscript@tmp@i>0pt% _{% \vphantom{#3}% #5% }% ^{% \vphantom{#2#7}% \vphantom{#1}% #6% }% \fi% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#7$}}% \ifdim\mhchem@prepostscript@tmp@i>0pt% \mhchem@minispace% {}% _{\vphantom{#3#5}}% ^{% \vphantom{#2#6}% \vphantom{#1}% #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}^{}_{}$}}% \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\MessageBreak preamble in order to use the most recent version of\MessageBreak 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% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% legacy %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifnum 4>\mhchem@option@version \newcommand*\mhchem@cmath[1]{\ensuremath{\text{\ensuremath{#1}}}}% \newcommand*\cmath[1]{\mhchem@cmath{#1}} \DeclareRobustCommand\cf[2][]{\mhchem@cf[#1]{#2}} \fi