我正在尝试绘制一些复杂的反应方案,其中一些反应具有类似于下图中的额外输入/输出化合物。
我完全不熟悉,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 之前),已包含在修订历史记录中