chemfig:双鱼叉 + 拱形进/出箭头反应

chemfig:双鱼叉 + 拱形进/出箭头反应

我正在尝试绘制一些复杂的反应方案,其中一些反应具有类似于下图中的额外输入/输出化合物。

在此处输入图片描述

我完全不熟悉,chemfig遗憾的是,对 了解甚少tikz。看来理想的方法是\definearrow但我找不到简单的指南(请参阅这个帖子例如)。或者,我尝试使用两个单独的箭头(见下文),但我不知道如何将特定的箭头更改为鱼叉。此外,我无法弄清楚如何旋转弓形箭头末端的化合物名称(但这实际上是另一个问题)

这是我目前的代码广告:

\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}

答案1

您可以创建自己的自定义箭头。例如:

\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}

可能有更简单或更优雅的方法来解决这个问题,但上面的代码会产生以下结果,这可能就是您想要的:

在此处输入图片描述

注意:此响应的版本适用于旧版本的ChemFig软件包(v 1.41 之前),已包含在修订历史记录中

相关内容