chemfig 中的发散箭头

chemfig 中的发散箭头

我需要创建一个反应方案,其中一个分子被光击中产生两个状态,每个状态演变为一个状态(参见图片)因为合并不能反向工作(将一个分子连接到两个)

\documentclass[12pt]{article}


    \usepackage[italian]{babel}
    \usepackage{floatrow}
    \usepackage{wrapfig}
    \usepackage{hyperref}
    \usepackage{etoolbox}
    \usepackage{cmbright}
    \usepackage{geometry}
    \usepackage{tikz}
\usepackage{amsmath}
\usepackage{chemfig}
\usepackage{graphicx}
\usepackage{imakeidx}
\makeindex
\usepackage[colorlinks=true,     allcolors=blue]{hyperref}
\usepackage{pict2e}
\usepackage{float}
    \usetikzlibrary{positioning, calc, arrows.meta}
    \begin{document}
        \begin{figure}
                \schemestart
                \chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}
                \arrow[->]{$h\nu$}
                \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{S_1}}\arrow{->[ISC]}[-90] \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{T_1}} \merge(c1)(c2)--()\chemfig{R_1-[:40]\Charge{[.radius=1.5pt,.style={draw=gray}] 0 =\.[{.style={draw=none,fill=black}}]}{C} =[:90]O}  \+ \Charge{[.radius=1.5pt,.style={draw=gray}]
                180 =\.[{.style={draw=none,fill=black}}]}{R_2}
                \schemestop
                \caption{ My Caption}
            
            \end{figure}
    \end{document}

示例图片 另外,如何对齐最后两个分子,即右边带有点的分子。

答案1

经过反复尝试,我得出了以下解决方案:

\documentclass[a4paper,12pt]{article}

\usepackage{chemfig}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
\setchemfig{bond style={line width=1pt},atom sep=2.1em}

\usepackage[body={17.0cm,26cm},top=2.0cm,left=2.0cm]{geometry}

\usetikzlibrary{matrix}

\begin{document}

\newsavebox\keto
\sbox\keto{\chemfig{C(=[:90]O) (-[:-140]R_1) (-[:-40]R_2)}} % needed to save inner box from outer box parameters in TikZ
\centering
\schemestart
        \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{S_1}}
    \arrow{->[ISC]}[-90]
        \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{T_1}}
     \merge(c1)(c2)--()
        \chemfig{\charge{[circle,.radius=1.5pt,.style={draw=gray,fill=gray}] 0 =\.}{C}(-[:-140]R_1) =[:90]O} 
    \+ 
        \charge{[circle,.radius=1.5pt,.style={draw=gray,fill=gray}]180 =\.}{R_2}
    \chemmove{
        \node[] at (-10.8,-0.15) {\usebox\keto};
        \draw[thick,red,-{stealth},shorten >= 2pt] (-9.5,0) -- node[above,rotate=50,yshift=2mm] {$h\nu$} (c1.west);
        \draw[thick,red,-{stealth},shorten >= 2pt] (-9.5,0) -- node[below,rotate=-50,yshift=-2mm] {$h\nu$} (c2.west);
        }
\schemestop 
    
\end{document}

由于chemfig依赖于,TikZ您可以在环境中使用 tikz 命令\chemmove。在这种情况下,我必须从两种状态和反应方案的最后一部分开始。第一部分必须使用 输入。在 TikZ 节点中\chemmove放置分子时必须特别小心。请参阅\chemfig正确嵌套 tikzpicture 环境:将所有 PGF 值重置为其默认值

\chemmove您可能需要对该方案部分的参数进行一些调整。笔记:因为第一个条目的原点\chemfig{}在右侧,所以需要在 x 坐标中使用负值,这会导致页面掉落。因此命令如下\centering

编辑 改变\chemmove部分

\chemmove{
    \node[] at (-10.8,0) {\usebox\keto};
    \draw[-{stealth},shorten >= 2pt] (-8.5,0) |- (c1.west);
    \draw[-{stealth},shorten >= 2pt] (-8.5,0) |- (c2.west);
    \draw[-] (-9.5,0.2) -- node[above, yshift=2mm] {$h\nu$} (-8.5,0.2);
}

将在左侧给出与右侧合并相同的箭头,正如 ChocoDuck 所建议的那样。

在此处输入图片描述

答案2

箭头也可以向后移动,使用 \arrow{<-}

答案3

您可以使用“chemfig”和“arrow”命令模拟反向箭头合并。只需调整参数即可获得所需的“反向合并”。

\documentclass[margin={2mm 2mm}]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage{chemfig}
\begin{document}
\schemestart
\chemfig{-[0,1,,,red,thick](-[2,1,,,red,thick]@{z})(-[6,1,,,red,thick]@{x})}
\arrow(@{z}--){->[$h\nu$]}[00,1,shorten <=-10pt,red,thick]
\arrow(@{x}--){->[$h\nu$]}[00,1,shorten <=-10pt,red,thick]
\schemestop
\end{document}

在此处输入图片描述

答案4

\documentclass[border=5mm]{standalone}
\usepackage{chemfig}
\begin{document}
    \schemestart
    \chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}
    \arrow(a--)[,1.5,,,draw=none]
    \subscheme{
        \charge{30:4pt=$\mathrm{S}_1$}{\chemleft{[}\chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}\chemright{]}}
        \arrow(b--c){->[*{0}ISC]}[-90,1.5]
        \charge{30:4pt=$\mathrm{T}_1$}{\chemleft[\chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}\chemright{]}}
    }
    \arrow(--d)[,1.5,,,draw=none]
    \chemfig{(-[:210]R_2)(-[:330,0.1,,,draw=none]\charge{330:-1pt=\.\,}{})=[2]O}
    \+
    \chemfig{\charge{90:1pt=\.\,}{R}_1}
    \schemestop
    \chemmove{
        \draw[thick,shorten >=10pt] (a.east) -- ++(1,0) |- (b.west);
        \draw[thick,shorten >=10pt] (a.east) -- ++(1,0) |- (c.west);
        \draw[-,thick,shorten >=15pt,shorten <=8pt] (b.east) -- ++(1.3,0) |- (d.west);
        \draw[thick,shorten >=10pt,shorten <=8pt] (c.east) -- ++(1.3,0) |- (d.west);
    }
\end{document}

在此处输入图片描述

相关内容