Center-align stacked molecules with chemfig

chemfigchemistrytikz-arrowstikz-stylestikzpagenodes

At right, the vertical arrow from ethylene to M is a coordination bond. Is it possible to centrally align the two molecules (ethylene and the solid catalyst surface), aligning their centers with the coordination bond arrow?

\documentclass[12pt]{article}

\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usepackage{chemfig}
  
\usetikzlibrary{shapes,positioning,intersections,quotes}    


\setchemfig{%
        arrow offset=9pt,
        arrow coeff=0.7,
        + sep left=0.3em,
        + sep right=0.3em,
        atom sep=1.5em,
        fixed length=true
}

\begin{document}
\schemestart
\chemfig{C(-[3]H)(-[5]H)=C(-[1]H)-[7]H}
\arrow{0}[,0] \+
\chemfig{ M (-[0]M{\sim}) (-[4]{\sim}M) }
\arrow
\subscheme{
    \chemfig{H_2C=[@{bond}]CH_2}
    \arrow{0}[-90,.23]
    \chemfig{ M (-[0]M{\sim}) (-[4]{\sim}M) }
    \chemmove{
        \node[below=3px of bond] (double_bond) {};
        \node[below=19px of bond] (solid_surface) {};
        \draw[-stealth](double_bond)--(solid_surface);
    }
}
\schemestop
\end{document}

enter image description here

Best Answer

The issue is a space that you don't want after \chemfig{ M(-[0]M{\sim}) (-[4]{\sim}M) }. Add a % to remove the whitespace at the end of the line.

enter image description here

\subscheme{
    \chemfig{H_2C=[@{bond}]CH_2}
    \arrow{0}[-90,.23]
    \chemfig{ M(-[0]M{\sim}) (-[4]{\sim}M) }% <--------NEED THIS!!
    \chemmove{
        \node[below=3px of bond] (double_bond) {};
        \node[below=19px of bond] (solid_surface) {};
        \draw[-stealth](double_bond)--(solid_surface);
    }
}
\schemestop
Related Question