Chemfig 中的弯曲双鱼叉(平衡)箭

Chemfig 中的弯曲双鱼叉(平衡)箭

如何绘制形式为<=>而不是->的弯曲箭头? 在此处输入图片描述

\documentclass[a4paper]{article}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}
\usepackage{chemfig}


\begin{document}


\begin{figure}[h!]
\footnotesize
\begin{center}
\noindent
\makeatletter
\definearrow1{s>}{%
\ifx\@empty#1\@empty
\expandafter\draw\expandafter[\CF@arrow@current@style,-CF](\CF@arrow@start@node)--(\CF@arrow@end@node);%
\else
\def\curvedarrow@style{shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset,}%
\CF@expadd@tocs\curvedarrow@style\CF@arrow@current@style
\expandafter\draw\expandafter[\curvedarrow@style,-CF](\CF@arrow@start@name)..controls#1..(\CF@arrow@end@name);
\fi
}
\makeatother
\schemedebug{false}
\schemestart
\noindent
\setcrambond{2pt}{}{}
\chemfig{ % Benzene Center
   [:60]**6(------)} % Команда [:60] обозначает поворот молекулы на 60 град. Для ЦГ это незаметно. Однако baseline теперь внизу молекулы.
    \arrow(benz.north--ch.south){<=>[][][]}[90,2] % Линия к циклогексану
\chemfig{(*6(------))} % циклогексан
    \arrow(@benz.125--mch.305){<=>[][][]}[125,2,,,draw=none] % Линия к метилциклогексану
\chemfig{(*6(----(-)--))} % метилциклогексан
    \arrow(@benz.192--tol.east){<=>[][][]}[185,2,,,draw=none] % Линия к толуолу
\chemfig{(**6(-----(-)-))} % толуол
    \arrow(@benz.226--xy.10){<=>[][][]}[219,2,,,draw=none] % Линия к ксилолу
\chemfig{(**6((-)----(-)--))} % ксилол
    \arrow(@benz.255--eb.45){<=>[][][]}[248,2,,,draw=none] % Линия к этилбензолу
\chemfig{(**6((--[:150])------))} % этилбензол
    \arrow(@benz.285--hep.west){<=>[][][]}[285,2,,,draw=none] % Линия к гептану
\chemfig{(-[:35]-[:-35]-[:35]-[:-35]-[:35]-[:-35])} % гептан
    \arrow(@benz.325--hex.west){<=>[][][]}[325,2,,,draw=none] % Линия к гексану
\chemfig{(-[:35]-[:-35]-[:35]-[:-35]-[:35])} % гексан
    \arrow(@benz.355--ihex.175){<=>[][][]}[355,2,,,draw=none] % Линия к изогексану
\chemfig{(-[:-35](-[:270])-[:35]-[:-35]-[:35])} % изогексан
    \arrow(@benz.55--mcp.235){<=>[][][]}[55,2,,,draw=none] % Линия к МЦП
\chemfig{([:234]*5((-)-----))} % МЦП
    \arrow(@benz.210--l.235){<=>[][][]}[210,2]
    \arrow(@benz.330--r.235){<=>[][][]}[330,2]
    \arrow(@tol.90--mch.225){s>[+(90:2) and +(210:1)]}[60,2] % curved arrows
    \arrow(@ihex.90--mcp.330){s>[+(90:2.5) and +(330:1)]}[120,2.3]
    \arrow(@hep.240--eb.340){s>[+(240:1.2) and +(340:1.2)]}[195,2.6]
\schemestop
\end{center}
\normalsize

\caption{Пути образования бензола}
\label{fig:Benzene_precursors2}
\end{figure}

\end{document}

好吧,几个月来没人能帮我。我画了箭头。但我无法将其置于方案的中心。我不知道如何使中心线不可见。

\documentclass[a4paper]{article}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}
\usepackage{chemfig}


\begin{document}
\begin{figure}[h!]
\footnotesize
\begin{center}
\noindent
\tikz{\draw (0,0) -- (170:4cm) arc (170:135:4cm) -- +(210:2mm);
\draw (0,0) -- (45:4cm) arc (45:5:4cm) -- +(83:2mm);
\draw (0,0) -- (280:4cm) arc (280:260:4cm) -- +(338:2mm);
\draw (0,0) -- (135:3.85cm) arc (135:170:3.85cm) -- +(53:2mm);
\draw (0,0) -- (5:3.85cm) arc (5:45:3.85cm) -- +(290:2mm);
};
\end{center}
\normalsize
\caption{arrows}
\label{fig:arrows}
\end{figure}
\end{document}

在此处输入图片描述

答案1

<=>使用和箭头的宏定义->,您可以创建类似的弯曲替代方案。像这样:

\documentclass[a4paper]{article}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}
\usepackage{chemfig}

\begin{document}

\begin{figure}[h!]
\footnotesize
\begin{center}
\noindent
\makeatletter
\definearrow3{<§>}{%
    \CF@arrow@shift@nodes{#3}%
    \path[allow upside down](\CF@arrow@start@node)--(\CF@arrow@end@node)%
        node[pos=0,sloped,yshift= .866pt,xshift=-.5pt](\CF@arrow@start@node @u0){}%
        node[pos=0,sloped,yshift=-.866pt,xshift= .5pt](\CF@arrow@start@node @d0){}%
        node[pos=1,sloped,yshift= .866pt,xshift= .5pt](\CF@arrow@start@node @u1){}%
        node[pos=1,sloped,yshift=-.866pt,xshift=-.5pt](\CF@arrow@start@node @d1){};%
    \begingroup
        \pgfarrowharpoontrue
        \expandafter\draw\expandafter[\CF@arrow@current@style , bend left](\CF@arrow@start@node @u0) to (\CF@arrow@start@node @u1);%
        \expandafter\draw\expandafter[\CF@arrow@current@style , bend right](\CF@arrow@start@node @d1) to (\CF@arrow@start@node @d0);%
    \endgroup
    \CF@arrow@display@label{#1}{0.5}+\CF@arrow@start@node{#2}{0.5}-\CF@arrow@end@node%
}
\definearrow3{s>}{%
    \CF@arrow@shift@nodes{#3}%
    \expandafter\draw\expandafter[\CF@arrow@current@style, bend left](\CF@arrow@start@node) to (\CF@arrow@end@node);%
    \CF@arrow@display@label{#1}{0.5}+\CF@arrow@start@node{#2}{0.5}-\CF@arrow@end@node
}
\makeatother
\schemedebug{false}
\schemestart
\noindent
\setcrambond{2pt}{}{}
\chemfig{ % Benzene Center
   [:60]**6(------)} % Команда [:60] обозначает поворот молекулы на 60 град. Для ЦГ это незаметно. Однако baseline теперь внизу молекулы.
    \arrow(benz.north--ch.south){<=>[][][]}[90,2] % Линия к циклогексану
\chemfig{(*6(------))} % циклогексан
    \arrow(@benz.125--mch.305){<=>[][][]}[125,2,,,draw=none] % Линия к метилциклогексану
\chemfig{(*6(----(-)--))} % метилциклогексан
    \arrow(@benz.192--tol.east){<=>[][][]}[185,2,,,draw=none] % Линия к толуолу
\chemfig{(**6(-----(-)-))} % толуол
    \arrow(@benz.226--xy.10){<=>[][][]}[219,2,,,draw=none] % Линия к ксилолу
\chemfig{(**6((-)----(-)--))} % ксилол
    \arrow(@benz.255--eb.45){<=>[][][]}[248,2,,,draw=none] % Линия к этилбензолу
\chemfig{(**6((--[:150])------))} % этилбензол
    \arrow(@benz.285--hep.west){<=>[][][]}[285,2,,,draw=none] % Линия к гептану
\chemfig{(-[:35]-[:-35]-[:35]-[:-35]-[:35]-[:-35])} % гептан
    \arrow(@benz.325--hex.west){<=>[][][]}[325,2,,,draw=none] % Линия к гексану
\chemfig{(-[:35]-[:-35]-[:35]-[:-35]-[:35])} % гексан
    \arrow(@benz.355--ihex.175){<=>[][][]}[355,2,,,draw=none] % Линия к изогексану
\chemfig{(-[:-35](-[:270])-[:35]-[:-35]-[:35])} % изогексан
    \arrow(@benz.55--mcp.235){<=>[][][]}[55,2,,,draw=none] % Линия к МЦП
\chemfig{([:234]*5((-)-----))} % МЦП
    \arrow(@benz.210--l.235){<=>[][][]}[210,2]
    \arrow(@benz.330--r.235){<=>[][][]}[330,2]
    \arrow(@tol.90--mch.225){<§>[][][]}[60,2] % curved arrows
    \arrow(@[email protected]){<§>[][][]}[120,2.3]
    \arrow(@hep.240--eb.340){s>[][][]}[195,2.6]
\schemestop
\end{center}
\normalsize

\caption{Пути образования бензола}
\label{fig:Benzene_precursors2}
\end{figure}

\end{document}

双箭头仍然不是非常准确,但至少两个箭头的曲线是相同的。然后,bend我想使用比使用带坐标的曲线更容易。上面的代码产生:

在此处输入图片描述


编辑:编辑yshiftxshift,使它们适合的30度角bend

答案2

我做到了!虽然不是很理想,但我做到了。这是一个苯形成方案。

\documentclass[a4paper]{article}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}
\usepackage{chemfig}


\begin{document}


\begin{figure}[h!]
    \tiny
    \begin{center}
        \noindent
        \makeatletter
        \definearrow1{s>}{%
            \ifx\@empty#1\@empty
            \expandafter\draw\expandafter[\CF@arrow@current@style,-CF](\CF@arrow@start@node)--(\CF@arrow@end@node);%
            \else
            \def\curvedarrow@style{shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset,}%
            \CF@expadd@tocs\curvedarrow@style\CF@arrow@current@style
            \expandafter\draw\expandafter[\curvedarrow@style,-CF](\CF@arrow@start@name)..controls#1..(\CF@arrow@end@name);
            \fi
        }
        \makeatother
        \schemedebug{false}
        \schemestart
        \noindent
        \setcrambond{2pt}{}{}
        \chemfig{ % Benzene Center
            [:60]**6(------)} % Команда [:60] обозначает поворот молекулы на 60 град. Для ЦГ это незаметно. Однако baseline теперь внизу молекулы.
        \arrow(benz.north--ch.south){<=>[][][]}[90,2] % Линия к циклогексану
        \chemfig{(*6(------))} % циклогексан
        \arrow(@benz.125--mch.305){<=>[][][]}[125,2,,,draw=none] % Линия к метилциклогексану
        \chemfig{(*6(----(-)--))} % метилциклогексан
        \arrow(@benz.192--tol.east){<=>[][][]}[185,2,,,draw=none] % Линия к толуолу
        \chemfig{(**6(-----(-)-))} % толуол
        \arrow(@benz.226--xy.10){<=>[][][]}[219,2,,,draw=none] % Линия к ксилолу
        \chemfig{(**6((-)----(-)--))} % ксилол
        \arrow(@benz.255--eb.45){<=>[][][]}[248,2,,,draw=none] % Линия к этилбензолу
        \chemfig{(**6((--[:150])------))} % этилбензол
        \arrow(@benz.285--hep.west){<=>[][][]}[285,2,,,draw=none] % Линия к гептану
        \chemfig{(-[:35]-[:-35]-[:35]-[:-35]-[:35]-[:-35])} % гептан
        \arrow(@benz.325--hex.west){<=>[][][]}[325,2,,,draw=none] % Линия к гексану
        \chemfig{(-[:35]-[:-35]-[:35]-[:-35]-[:35])} % гексан
        \arrow(@benz.355--ihex.175){<=>[][][]}[355,2,,,draw=none] % Линия к изогексану
        \chemfig{(-[:-35](-[:270])-[:35]-[:-35]-[:35])} % изогексан
        \arrow(@benz.55--mcp.235){<=>[][][]}[55,2,,,draw=none] % Линия к МЦП
        \chemfig{([:234]*5((-)-----))} % МЦП
        \arrow(@benz.210--l.235){<=>[][][]}[210,2]
        \arrow(@benz.330--r.235){<=>[][][]}[330,2]
        \arrow(@tol.90--mch.225){s>[+(90:2) and +(210:1)]}[60,2] % curved arrows
        %\arrow(@[email protected]){s>[+(245:1.7) and +(90:2.4)]}[60,2] % curved arrows
        \arrow(@[email protected]){s>[+(249:1.7) and +(86:2.5)]}[60,2] % curved arrows
        \arrow(@ihex.90--mcp.330){s>[+(90:2.4) and +(330:0.8)]}[120,2.3]
        \arrow(@[email protected]){s>[+(306:1.5) and +(86:2.5)]}[120,2.3]
        \arrow(@hep.240--eb.340){s>[+(240:1.2) and +(340:2)]}[195,2.6]
        \schemestop
    \end{center}
    \normalsize
    \caption{Схематичное представление путей образования бензола в процессе каталитического риформинга}
    \label{fig:Benzene_precursors}
\end{figure}
\end{document}

在此处输入图片描述

相关内容