如何在 chemfig 中镜像可逆反应箭头

如何在 chemfig 中镜像可逆反应箭头

在 Chemfig 中,可逆反应用双鱼叉表示。顶部的鱼叉从左到右,底部的鱼叉从右到左。可以旋转这个双箭头。但我找不到像 \leftrighharpoon在包中那样镜像它的方法mathrel。这看起来很傻,但我的反应图非常大而且很复杂,所以正向和反向的相对位置很重要。

如果我遗漏了手册中或之前在此论坛上提出的问题中的某些内容,我深感抱歉。

答案1

最好的方法是定义一个新的箭头。你可以这样做:

\documentclass{article}
\usepackage{chemfig}

\makeatletter
    \pgfarrowsdeclare{revhalf}{revhalf}%
    {\CF@arrow@size\dimexpr2.5pt+2.5\pgflinewidth\relax
    \pgfarrowsleftextend{-\CF@arrow@size}\pgfarrowsrightextend{.5\pgflinewidth}}%
    {\CF@arrow@size\dimexpr2.5pt+2.5\pgflinewidth\relax
    \pgfsetdash{}\z@\pgfsetroundjoin\pgfsetroundcap
    \pgfpathmoveto{\pgfpoint\z@\z@}%
    \pgfpathlineto{\pgfpoint{-\CF@arrow@size}{-.5\CF@arrow@size}}%
    \pgfpathlineto{\pgfpoint{-.5\CF@arrow@size}\z@}%
    \pgfpathlineto{\pgfpoint\z@\z@}%
    \pgfusepathqfillstroke}

\definearrow3{<==>}{%
    \CF@arrow@shift@nodes{#3}%
    \edef\CF@tmp@str{%
        \noexpand\path[allow upside down](\CF@arrow@start@node)--(\CF@arrow@end@node)%
            node[pos=0,sloped,yshift=1pt](\CF@arrow@start@node @u0){}%
            node[pos=0,sloped,yshift=-1pt](\CF@arrow@start@node @d0){}%
            node[pos=1,sloped,yshift=1pt](\CF@arrow@start@node @u1){}%
            node[pos=1,sloped,yshift=-1pt](\CF@arrow@start@node @d1){};%
        }%
    \CF@tmp@str
    \expandafter\draw\expandafter[\CF@arrow@current@style,revhalf-](\CF@arrow@start@node @u0)--(\CF@arrow@start@node @u1);%
\expandafter\draw\expandafter[\CF@arrow@current@style,-revhalf](\CF@arrow@start@node @d0)--(\CF@arrow@start@node @d1);%
    \CF@arrow@display@label{#1}{0.5}+\CF@arrow@start@node{#2}{0.5}-\CF@arrow@end@node%
}
\makeatother


\begin{document}

Normal:

\schemestart
\chemfig{A}
\arrow{<=>}[45]
\chemfig{B}
\arrow{<=>}
\chemfig{C}
\schemestop

Reversed:

\schemestart
\chemfig{A}
\arrow{<==>}[45]
\chemfig{B}
\arrow{<==>}
\chemfig{C}
\schemestop

\end{document}

在此处输入图片描述

我知道它可能可以做得更好、更容易,但它应该能完成工作。

相关内容