Forked arrows with chemfig
Since you can use \chemfig
inside a tikzpicture
environment, you can place the three compounds (forgive me if that's not the right name) inside \node
s and then use \draw
to draw the arrows:
\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{positioning,calc}
\begin{document}
\definesubmol\Me[H_3C]{CH_3}
\begin{tikzpicture}[node distance=0cm and 2cm]
\node (A)
{\chemfig{R-C-[::-60]O-[::-60]C-[::-60]R}};
\node[above right=of A] (B)
{\chemfig{*6((-!\Me)=(-!\Me)-(-!\Me)=(-!\Me)-(-!\Me)=(-!\Me)-)}
};
\node[below right=of A] (C)
{\chemfig{CH_3CH_2-[:-60,,3]C(-[:-120]H_3C)=C(-[:-60]H)-[:60]C{(}CH_3{)}_3}};
\draw[-stealth] (A) -- ( $ (A.0)!0.5!(B.west|-A.0) $ ) |- (B.west) node[auto,pos=0.7] {i,j};
\draw[-stealth] (A) -- ( $ (A.0)!0.5!(C.west|-A.0) $ ) |- (C.west) node[auto,pos=0.7] {j};
\end{tikzpicture}
\end{document}
You say »Semantically it is exactly opposite to \merge
command« so lets define a command \fork
that is the opposite of \merge
. For this I patch the necessary commands with etoolbox
's \patchcmd
. The idea is simple: define a boolean switch \iffork
and add arrow heads depending on the status. Then define \merge
so it sets \forkfalse
and \fork
the same way but with \forktrue
.
Here we go:
\documentclass{article}
\usepackage{chemfig}
\usepackage{etoolbox}
\makeatletter
\newif\iffork
\patchcmd\CF@merge@ii{-CF@full}{\iffork\else -CF@full\fi}{}{}%
% \CF@merge@iii needs to be patched twice:
\patchcmd\CF@merge@iii{>=0]}{>=0,\iffork CF@full-\fi]}{}{}%
\patchcmd\CF@merge@iii{>=0]}{>=0,\iffork CF@full-\fi]}{}{}%
\patchcmd\CF@schemestart@i
{\let\merge\CF@merge}
{%
\def\merge{\forkfalse\CF@merge}%
\def\fork{\forktrue\CF@merge}%
}
{}{}
\patchcmd\CF@schemestart@v{\merge}{\merge\fork}{}{}
\makeatother
\begin{document}
\schemestart
a \arrow{0} b \arrow{0} c
\merge{v}(c1)(c2)(c3)--() d
\schemestop
\bigskip
\schemestart
a \arrow{0} b \arrow{0} c
\fork{v}(c1)(c2)(c3)--() d
\schemestop
\end{document}