我在 chemfig 中有以下反应方案:
我需要一些可逆反应:正向反应箭头为黑色,逆向反应箭头为红色。在 chemfig 中可以实现吗?
平均能量损失
\documentclass{article}
\usepackage{chemfig}
\begin{document}
\schemestart
P \arrow(P--Q){<=>[$\mathrm{k_{pq}}$]}[,,,red] Q
\arrow{<=>[$\mathrm{k_{qs}}$]}[30,,,red] S \arrow(S--T){<=>[][$\mathrm{k_{st}}$]}[-30,,,red] T
\arrow(@Q--R){<=>[][$\mathrm{k_{qr}}$]}[-30,,,red] R
\arrow(@R--@T){<=>[][$\mathrm{k_{rt}}$]}[,,,red]
\arrow(@T--U){<=>[][$\mathrm{k_{tu}}$]}[,,,red] U
\arrow(@U--V){->[$\mathrm{k_{uv}}$]} V
\schemestop
\end{document}
答案1
根据评论中的要求,这里有一个可能的解决方案,它不会覆盖的定义<=>
,而是定义自己的新箭头<=r>
。
\documentclass{article}
\usepackage{chemfig}
\catcode`\_=11
\definearrow3{<=r>}{%
\CF_arrowshiftnodes{#3}%
\path[allow upside down](\CF_arrowstartnode)--(\CF_arrowendnode)%
node[pos=0,sloped,yshift=1pt](\CF_arrowstartnode u0){}%
node[pos=0,sloped,yshift=-1pt](\CF_arrowstartnode d0){}%
node[pos=1,sloped,yshift=1pt](\CF_arrowstartnode u1){}%
node[pos=1,sloped,yshift=-1pt](\CF_arrowstartnode d1){};%
\begingroup
\pgfarrowharpoontrue
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode u0)--(\CF_arrowstartnode u1);%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle,red](\CF_arrowstartnode d1)--(\CF_arrowstartnode d0);%
\endgroup
\CF_arrowdisplaylabel{#1}{0.5}+\CF_arrowstartnode{#2}{0.5}-\CF_arrowendnode%
}
\catcode`\_=8
\begin{document}
\schemestart
P \arrow(P--Q){<=r>[$\mathrm{k_{pq}}$]}[,,,] Q
\arrow{<=>[$\mathrm{k_{qs}}$]}[30,,,] S \arrow(S--T){<=>[][$\mathrm{k_{st}}$]}[-30,,,] T
\arrow(@Q--R){<=>[][$\mathrm{k_{qr}}$]}[-30,,,] R
\arrow(@R--@T){<=>[][$\mathrm{k_{rt}}$]}[,,,]
\arrow(@T--U){<=>[][$\mathrm{k_{tu}}$]}[,,,] U
\arrow(@U--V){->[$\mathrm{k_{uv}}$]} V
\schemestop
\end{document}
输出结果如下:
以下代码将颜色变化应用于所有<=>
箭头。
\documentclass{article}
\usepackage{chemfig}
\catcode`\_=11
\definearrow3{<=>}{%
\CF_arrowshiftnodes{#3}%
\path[allow upside down](\CF_arrowstartnode)--(\CF_arrowendnode)%
node[pos=0,sloped,yshift=1pt](\CF_arrowstartnode u0){}%
node[pos=0,sloped,yshift=-1pt](\CF_arrowstartnode d0){}%
node[pos=1,sloped,yshift=1pt](\CF_arrowstartnode u1){}%
node[pos=1,sloped,yshift=-1pt](\CF_arrowstartnode d1){};%
\begingroup
\pgfarrowharpoontrue
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode u0)--(\CF_arrowstartnode u1);%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle,red](\CF_arrowstartnode d1)--(\CF_arrowstartnode d0);% <---------------modified line
\endgroup
\CF_arrowdisplaylabel{#1}{0.5}+\CF_arrowstartnode{#2}{0.5}-\CF_arrowendnode%
}
\catcode`\_=8
\begin{document}
\schemestart
P \arrow(P--Q){<=>[$\mathrm{k_{pq}}$]}[,,,] Q
\arrow{<=>[$\mathrm{k_{qs}}$]}[30,,,] S \arrow(S--T){<=>[][$\mathrm{k_{st}}$]}[-30,,,] T
\arrow(@Q--R){<=>[][$\mathrm{k_{qr}}$]}[-30,,,] R
\arrow(@R--@T){<=>[][$\mathrm{k_{rt}}$]}[,,,]
\arrow(@T--U){<=>[][$\mathrm{k_{tu}}$]}[,,,] U
\arrow(@U--V){->[$\mathrm{k_{uv}}$]} V
\schemestop
\end{document}
<=>
我复制了from的定义chemfig.tex
并添加,red
到代码中的标记行中。
输出结果如下:
chemfig
可以通过本帖的修订历史访问与旧版本软件包(v1.4 之前)兼容的这些 MWE 的先前版本。