# chemfig: double harpoon + arched in/out arrow in reaction

I am trying to draw some complex reaction scheme where some of the reactions have additional in/out compounds akin to the ones in the figure below.

I am not familiar at all with chemfig and sadly, know little of tikz. It seems that the ideal way would be to \definearrow but I could not find an easy guide on that (see this post for example). Alternatively I am trying to use two separate arrows (see below) but I don't know how to change specific arrowheads into harpoons. Also I cannot figure out how to rotate the names of the compounds at the end of the arched arrow (but that is actually another question)

This is my code ad the moment:

\documentclass[a4paper,11pt,final]{article}
\usepackage{chemfig}
\usepackage[version=4,arrows=pgf-filled]{mhchem}
...
\begin{document}
...
\begin{figure}[tp]
\schemedebug{true}
\scalebox{1.0}{
\schemestart[90,0.7]
\ce{T_oK^+}
\arrow(t1--t2){->[][][2pt]}\ce{T_o}
\arrow(@t2--@t1){-U>[][\ce{K+}][2pt]}
\schemestop
}
\end{figure}
...
\end{document}


You can create your own custom arrows. For example like this:

\documentclass[border=1mm,tikz]{standalone}
\usepackage{chemfig}
\usepackage[version=4,arrows=pgf-filled]{mhchem}

\catcode\_=11
\definearrow2{<=U>}{%
\CF_arrowshiftnodes{#2}%
\path[allow upside down](\CF_arrowstartnode)--(\CF_arrowendnode)%
node[pos=0,yshift=1pt](\CF_arrowstartnode u0){}%
node[pos=0,yshift=-1pt](\CF_arrowstartnode d0){}%
node[pos=1,yshift=1pt](\CF_arrowstartnode u1){}%
node[pos=1,yshift=-1pt](\CF_arrowstartnode d1){};%
\begingroup%
\pgfarrowharpoontrue%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode u0)--(\CF_arrowstartnode u1)node[midway](Uarrowarctangent){};%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode d1)--(\CF_arrowstartnode d0);%
\endgroup%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](Uarrowarctangent) arc (-90:-10:.333) node (Uarrowend) {};%
\node[anchor=south,yshift=2pt] at (Uarrowend.north) {#1};
}

\definearrow2{<=u>}{%
\CF_arrowshiftnodes{#2}%
\path[allow upside down](\CF_arrowstartnode)--(\CF_arrowendnode)%
node[pos=0,yshift=1pt](\CF_arrowstartnode u0){}%
node[pos=0,yshift=-1pt](\CF_arrowstartnode d0){}%
node[pos=1,yshift=1pt](\CF_arrowstartnode u1){}%
node[pos=1,yshift=-1pt](\CF_arrowstartnode d1){};%
\begingroup%
\pgfarrowharpoontrue%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode u0)--(\CF_arrowstartnode u1);%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode d1)--(\CF_arrowstartnode d0)node[midway](Uarrowarctangent){};%
\endgroup%
\expandafter\draw\expandafter(Uarrowarctangent) arc (90:10:.333) node (Uarrowend) {};%
\node[anchor=north,yshift=-2pt] at (Uarrowend.south) {#1};
}

\definearrow2{<U=>}{%
\CF_arrowshiftnodes{#2}%
\path[allow upside down](\CF_arrowstartnode)--(\CF_arrowendnode)%
node[pos=0,yshift=1pt](\CF_arrowstartnode u0){}%
node[pos=0,yshift=-1pt](\CF_arrowstartnode d0){}%
node[pos=1,yshift=1pt](\CF_arrowstartnode u1){}%
node[pos=1,yshift=-1pt](\CF_arrowstartnode d1){};%
\begingroup%
\pgfarrowharpoontrue%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode u0)--(\CF_arrowstartnode u1)node[midway](Uarrowarctangent){};%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode d1)--(\CF_arrowstartnode d0);%
\endgroup%
\expandafter\draw\expandafter(Uarrowarctangent) arc (270:190:.333) node (Uarrowend) {};%
\node[anchor=south,yshift=2pt] at (Uarrowend.north) {#1};
}

\definearrow2{<u=>}{%
\CF_arrowshiftnodes{#2}%
\path[allow upside down](\CF_arrowstartnode)--(\CF_arrowendnode)%
node[pos=0,yshift=1pt](\CF_arrowstartnode u0){}%
node[pos=0,yshift=-1pt](\CF_arrowstartnode d0){}%
node[pos=1,yshift=1pt](\CF_arrowstartnode u1){}%
node[pos=1,yshift=-1pt](\CF_arrowstartnode d1){};%
\begingroup%
\pgfarrowharpoontrue%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode u0)--(\CF_arrowstartnode u1);%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode d1)--(\CF_arrowstartnode d0)node[midway](Uarrowarctangent){};%
\endgroup%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](Uarrowarctangent) arc (-270:-190:.333) node (Uarrowend) {};%
\node[anchor=north,yshift=-2pt] at (Uarrowend.south) {#1};
}
\catcode\_=8
\begin{document}

%\schemedebug{true}
\schemestart
\ce{T_oK^+}\arrow{<=U>[\ce{K+}]}\ce{T_o}
\schemestop

\schemestart
\ce{T_oK^+}\arrow{<=u>[\ce{K+}]}\ce{T_o}
\schemestop

\schemestart
\ce{T_oK^+}\arrow{<U=>[\ce{K+}]}\ce{T_o}
\schemestop

\schemestart
\ce{T_oK^+}\arrow{<u=>[\ce{K+}]}\ce{T_o}
\schemestop

\end{document}


There may me an easier or more elegant way to solve this problem, but the above code would yield the following result, which is probably what you looked for:

Note: A version of this response which works with older versions of the ChemFig package (prior to v 1.41) is included in the revision history

• Excellent. Thanks. Exactly what I was looking for! – maurizio Oct 22 '18 at 21:42
• You're welcome. Probably you need to adjust some of my values manually, for instance the distance of the double-harpoon arrows. I just assumed the distance of both to be 2pt, but it may be different actually. Feel free to edit … – Jasper Habicht Oct 22 '18 at 21:46
• These look great, but I am having trouble getting them to function. The arrows end up looking like this - shifted off to the reactant side, and with the equilibrium lines, and arrow heads not showing up. Do you have any ideas why this might be happening? – Taylor Scott Feb 19 '20 at 18:28
• From the documentation, it appears that the author has completely rewritten how the the package works, and the @ notation in this answer is no longer functional - I am working on a re-write – Taylor Scott Feb 21 '20 at 18:29
• @TaylorScott I did try the above code in a completely new Overleaf document and it worked. But maybe the set up was still not up to date. Sorry for that! And thanks for updating this! 😊 – Jasper Habicht Feb 21 '20 at 18:33