[Tex/LaTex] Vertical alignment of reaction mechanism

chemfigchemistry

How can I align the following reaction mechanism of the Aspirin synthesis in chemfig?

Code:

\schemestart
\definesubmol\nobond{-[2,0.2,,,draw=none]}
\chembelow[5mm]{\chemfig[][scale=0.7]{HO-[:-30]@{5}(!\nobond\scriptstyle\oplus)(-[:-90]CH_3)(-[@{2}:30]O-[:-30](-[:-90]CH_3)=[:30]O)}}{\chembelow[5mm]{+}{\chemfig[][scale=0.7]{*6(=-=(-([:90]=O)([:-40]-OH))-(-@{4}O@{3}H)=-)}}}
\qquad\qquad
\arrow(.base east--.base west){->[\tiny\chemfig{{-}CH_3COOH}][][4pt]}
\chemfig[][scale=0.7]{*6(=-=(-([:90]=O)([:-40]-OH))-(-O-[:-210](-[:90]@{7}O-[@{6}:360]H)(-[:210]CH_3))=-)}
\chemmove[->,shorten <=2pt]{
    \draw[shorten >=8pt](2)..controls +(-50:2.5cm)and+(45:1cm)..(3);}
\chemmove[->,shorten <=2pt]{
    \draw[shorten >=3pt](4)..controls +(180:1cm)and+(-135:1cm)..(5);}
\chemmove[->,shorten <=2pt]{
    \draw[shorten >=5pt](6)..controls +(90:5mm)and+(90:5mm)..(7);}
\arrow{->[\tiny\chemfig{{-}\chemabove{H}\oplus}]}
\chemfig[][scale=0.7]{*6(=-=(-([:90]=O)([:-40]-OH))-(-O-[:-210](=[:90]O)(-[:210]CH_3))=-)}
\schemestop

Thank you for your answer!

Reaction mechanism in the actual state

Best Answer

How about this:

\documentclass{article}

\usepackage{chemfig}
\definesubmol\nobond{-[2,0.2,,,draw=none]}

\begin{document}

\schemestart
  \subscheme[-90]{
    \chemfig[atom style={scale=0.7}]{
      HO-[:-30]@{5}(!\nobond\scriptstyle\oplus)(-[:-90]CH_3)(-[@{2}:30]O
      -[:-30](-[:-90]CH_3)=[:30]O)
    }
    \arrow{0[+][][-10pt]}
    \chemfig[atom style={scale=0.7}]{*6(=-=(-([:90]=O)([:-40]-OH))-(-@{4}O@{3}H)=-)}
  }
  \arrow{->[\tiny\chemfig{{-}CH_3COOH}]}[,1.5]
  \chemfig[atom style={scale=0.7}]{
    *6(=-=(-([:90]=O)([:-40]-OH))-(-O-[:-210](-[:90]@{7}O-[@{6}:360]H)(-[:210]CH_3))=-)
  }
  \arrow{->[\tiny\chemfig{{-}\chemabove{H}\oplus}]}
  \chemfig[atom style={scale=0.7}]{
    *6(=-=(-([:90]=O)([:-40]-OH))-(-O-[:-210](=[:90]O)(-[:210]CH_3))=-)
  }
\schemestop
\chemmove[->,shorten <=2pt]{
  \draw[shorten >=8pt](2)..controls +(-50:2.5cm)and+(45:1cm)..(3);
  \draw[shorten >=3pt](4)..controls +(180:1cm)and+(-135:1cm)..(5);
  \draw[shorten >=5pt](6)..controls +(90:5mm)and+(90:5mm)..(7);
}

\end{document}

enter image description here


Despite the scaling and the \tiny fontsize for the arrow labels the scheme stil exceeds the page width. Personally I'd play with chemfig's atom sep (and bond offset) but choose a larger fontsize, \footnotesize maybe. (In the example below showframe visualizes the page dimensions.)

The example uses the chemmacros package (which also loads the chemformula package). It provides the \scrp and offers the possibility to print all charges in chemformula's formulas (\ch) as formal charges (\chemsetup{ charges/circled = all })

\documentclass{article}

\usepackage{chemfig,chemmacros,showframe}
\definesubmol\pchargeup{-[2,0.4,,,draw=none]\scrp}
\definesubmol\pchargedown{-[6,0.4,,,draw=none]\scrp}

\begin{document}

\begin{center}
  \chemsetup{charges/circled=all}
  \setchemfig{atom sep = 1.7em , bond offset = 0.5pt}
  \footnotesize
\schemestart
  \subscheme[-90]{
    \chemfig{
      HO-[:-30]@{C1}(!\pchargeup)
      (-[:-90]CH_3)
      (-[@{b}:30]O-[:-30](-[:-90]CH_3)=[:30]O)
    }
    \arrow{0[+][][-10pt]}
    \chemfig{*6(=-=(-([:90]=O)([:-40]-OH))-(-@{OH}OH)=-)}
  }
  \arrow{->[${}-\ch{CH3COOH}$]}[,1.7]
  \chemfig{
    *6(
      =-=(-([:90]=O)([:-40]-OH))
      -(-O-[:-210]@{C2}(-[:90]O-[@{H}:360]H)(!\pchargedown)-[:210]CH_3)
      =-
    )
  }
  \arrow{->[${}-\ch{H+}$]}
  \chemfig{*6(=-=(-([:90]=O)([:-40]-OH))-(-O-[:-210](=[:90]O)(-[:210]CH_3))=-)}
\schemestop
\chemmove[red,-el,shorten <=2pt,shorten >=2pt]{
  \draw[shorten >=8pt] (b) ..controls +(-50:2.5cm) and +(10:1cm)  .. (OH) ;
  \draw (OH)..controls +(180:1cm)   and +(-135:1cm).. (C1) ;
  \draw (H) ..controls +(-90:3mm)   and +(30:5mm)  .. (C2) ;
}
\end{center}

\end{document}

enter image description here

Related Question