chemfig で分子の周りの線を曲げて、浮動線を追加するにはどうすればよいでしょうか?

chemfig で分子の周りの線を曲げて、浮動線を追加するにはどうすればよいでしょうか?

そこで私は TikZ で化学式を作りたいのですが、現在は次のようになっています:

私の問題は、分子の下の黄色い線を曲げて、テキストをより見やすくし、分子を途中で切断しないようにしたいということです。私はすでに chemfig マニュアルを読み、曲線結合を見つけましたが、構文と別の制御ポイントを追加する方法がよくわかりません。

もう 1 つの問題は、特定の原子を指すフローティング矢印付きのフローティング テキストを追加したいということです。

最終的には、こんな感じにしたいと思っています。(どのような線にしたいかを示すために、オレンジと紫の線をもう 1 本追加しました)

これが私のコードです:

\documentclass[border=3mm]{standalone}

\usepackage{chemfig}

\setchemfig{debug=false}
\setchemfig{scheme debug=false}

\begin{document}
    \schemestart
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=C(-[::+45]H)(-[::+315]H))}
        }
        \+
        \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,270=\|}{Br}}
        \arrow(.east--.west){<=>}
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=[@{a}]C(-[::+45]H)(-[::+315]H))}
        }
        \chemfig{@{b}\charge{90=\|,180=\|,270=\|,45[red,anchor=180+\chargeangle]=$\delta^+$}{Br}-[@{c}]@{d}\charge{0=\|,90=\|,270=\|,45[blue,anchor=180+\chargeangle]=$\delta^-$}{Br}}
        \arrow(@c2--)[-90]
        \chemfig{([::-90]C(-[::+90]H)(-[::+180]H)(-[::+270]\charge{90=\|,180=\|,270=\|}{Br})-C(-[::+0]H)(-[::+90]\charge{0=\|,90=\|,270=\|}{Br})(-[::+270]H))}
        \arrow(@c4--){<=>}[-90]
        \hflipnext
        \chemfig{\charge{180[red,circle,anchor=180+\chargeangle]=$\oplus$}{Br}(-[1,,,,dash pattern=on 2pt off 2pt]@{e}C?(-[::+0]H)(-[::+90]H))(-[7,,,,dash pattern=on 2pt off 2pt]C?(-[::+0]H)(-[::+270]H))}
        \quad
        \quad
        \chemfig{@{f}\charge{0=\|,90=\|,180=\|,270=\|,45[blue,circle,anchor=180+\chargeangle]=$\ominus$}{Br}}
        \arrow(@[email protected]){<=>}
    \schemestop
    \chemmove{
        \draw[red,shorten >=4pt] (a).. controls +(0:1cm) and +(225:1cm).. (b);
        \draw[red,shorten >=4pt] (c).. controls +(270:1cm) and +(270:1cm).. (d);
        \draw[orange,shorten >=4pt] (f).. controls +(255:1cm) and +(225:1cm).. node[below] {Rueckseitenangriff} (e);
    }
\end{document}

ご協力いただければ幸いです。ありがとうございます!

答え1

ここに 2 つのオプションがあり、さらに少なくとも 1 つあります。

chemfigは 上に構築されているTikzので、Tikzコマンドも使用できます。

  • 特定の座標に名前を付ける(a) .. (f)
  • \drawパスを提供する

は、controlsTikz でベジェ曲線を指定する方法です。パラメータを想像するのは難しいと思いますが、想像できれば、凝った曲線を作成するのに最適な方法です。

ただし、私は 2 つの代替案を提示します。

        % ~~~ straight forward replacement ~~~~~~~~~~~~~
        \draw[orange,shorten >=4pt] 
                    (f) -- ++(0,-1.7) 
                        -- node[pos=.5,below]{Rückseitenangriff} ++(-3.5,0)
                        --  (e);
  • \draw(f) から (e)
  • しかし、この道を終わらせる前に;
  • ++ダウンステップとサイドステップの2つの新しい座標( )を配置し、相対ステップとして記述する
  • node下の新しいパスにを配置します( が欠落していることに注意してください\) //pos=さらなる微調整に使用します
  • 複雑な曲線は不要、指定通りに描くだけ
        % ~~~ an alternative ~~~~~~~~~~~~~~~~~~~~~~~
        \draw[green,shorten >=4pt,rounded corners] 
                    (f.230) -- ++(0,-1.5) 
                        --  ++(-3.2,0)
                        --  (e);
  • 同じ考え
  • node何らかの理由で図面が拡大されないため、を省略しました
  • 使用されたrounded cornersオプションTikz
  • 極座標を使用して開始点を少し左にシフトしました(f.230)

--次のように、すべての文または一部の文を に置き換えることもできますto[in=,out=]

(f.230) to[out=300,in=45] ++(0,-1.5) ...

(できれば)右に弓を引いて始めます。

ご覧のとおり、babel利便性のために言語パッケージを配置しました。

結果

\documentclass[border=3mm]{standalone}
\usepackage[ngerman]{babel}     % <<<
\usepackage{chemfig}

%\setchemfig{debug=false}
%\setchemfig{scheme debug=false}

\begin{document}
    \schemestart
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=C(-[::+45]H)(-[::+315]H))}
        }
        \+
        \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,270=\|}{Br}}
        \arrow(.east--.west){<=>}
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=[@{a}]C(-[::+45]H)(-[::+315]H))}
        }
        \chemfig{@{b}\charge{90=\|,180=\|,270=\|,45[red,anchor=180+\chargeangle]=$\delta^+$}{Br}-[@{c}]@{d}\charge{0=\|,90=\|,270=\|,45[blue,anchor=180+\chargeangle]=$\delta^-$}{Br}}
        \arrow(@c2--)[-90]
        \chemfig{([::-90]C(-[::+90]H)(-[::+180]H)(-[::+270]\charge{90=\|,180=\|,270=\|}{Br})-C(-[::+0]H)(-[::+90]\charge{0=\|,90=\|,270=\|}{Br})(-[::+270]H))}
        \arrow(@c4--){<=>}[-90]
        \hflipnext
        \chemfig{\charge{180[red,circle,anchor=180+\chargeangle]=$\oplus$}{Br}(-[1,,,,dash pattern=on 2pt off 2pt]@{e}C?(-[::+0]H)(-[::+90]H))(-[7,,,,dash pattern=on 2pt off 2pt]C?(-[::+0]H)(-[::+270]H))}
        \quad
        \quad
        \chemfig{@{f}\charge{0=\|,90=\|,180=\|,270=\|,45[blue,circle,anchor=180+\chargeangle]=$\ominus$}{Br}}
        \arrow(@[email protected]){<=>}
    \schemestop
    \chemmove{
        \draw[red,shorten >=4pt] (a).. controls +(0:1cm) and +(225:1cm).. (b);
        \draw[red,shorten >=4pt] (c).. controls +(270:1cm) and +(270:1cm).. (d);
%        \draw[orange,shorten >=4pt] (f).. controls +(255:1cm) and +(225:1cm).. node[below] {Rueckseitenangriff} (e);
        % ~~~ straight forward replacement ~~~~~~~~~~~~~
        \draw[orange,shorten >=4pt] 
                    (f) -- ++(0,-1.7) 
                        -- node[pos=.5,below]{Rückseitenangriff} ++(-3.5,0)
                        --  (e);
        % ~~~ an alternative ~~~~~~~~~~~~~~~~~~~~~~~
        \draw[green,shorten >=4pt,rounded corners] 
                    (f.230) -- ++(0,-1.5) 
                        --  ++(-3.2,0)
                        --  (e);
    }
\end{document}

答え2

別のアプローチ

\documentclass[border={5mm 12mm 5mm 5mm}]{standalone}
\usepackage{chemfig}
\tikzset{mybond/.style={dash pattern=on 2pt off 2pt}}
\begin{document}
\schemestart
\chemfig{C(-[5]H)(-[7]H)=[2]C(-[1]H)(-[3]H)}
\arrow{0}[,0]
\+
\chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,270=\|}{Br}}
\arrow{<=>}
\chemfig{C(-[5]H)(-[7]H)=[@{a}2]C(-[1]H)(-[3]H)}
\arrow{0}[,0.2]
\chemfig{@{b}\charge{90=\|,180=\|,270=\|,45[red,anchor=180+\chargeangle]=$\delta^+$}{Br}-[@{c}]@{d}\charge{0=\|,90=\|,270=\|,45[blue,anchor=180+\chargeangle]=$\delta^-$}{Br}}
\arrow(@c3--){<=>}[-90]
\arrow(@c1--)[-90]
\chemfig{H-[2]C(-\charge{0=\|,90=\|,270=\|}{Br})(-[4]H)-[2]C(-H)(-[4]\charge{90=\|,180=\|,270=\|}{Br})-[2]H}
\arrow{<=>}[,2.03]
\chemfig{C?[db1](-[5]H)(-[7]H)(-[2,0.75,,,draw=none]-[,0.8,,,draw=none]@{g}\charge{180[red,circle,anchor=180+\chargeangle]=$\oplus$}{Br}?[db1,,mybond]?[db2]-[,,,,draw=none]@{f}\charge{0=\|,90=\|,180=\|,270=\|,45[blue,circle,anchor=180+\chargeangle]=$\ominus$}{Br})-[2,1.5]@{e}C?[db2,,mybond](-[1]H)(-[3]H)}
\schemestop
\chemmove{%
    \draw[red, shorten >=4pt] (a) .. controls +(0:8mm) and +(225:12mm).. (b);
    \draw[red, shorten >=4pt] (c) .. controls +(270:1cm) and +(270:1cm).. (d);
    \draw[orange, shorten >=4pt, shorten <=4pt] (f) .. controls +(255:3.5cm) and +(225:4cm).. (e) node[pos=0.35, below=1pt] {Rueckseitenangriff};
    \draw[<-, shorten <=4pt, blue] (g) -- ++(60:1) node[above] {Text};
}
\end{document}

ここに画像の説明を入力してください

関連情報