
所以我想在 TikZ 中製作我的化學公式,我現在有這個:
我的問題是,我想將分子下方的黃線彎曲,以使文字更明顯,並且不要在中間切割分子。我已經通讀了 chemfig 手冊並找到了彎曲鍵,但我不太了解語法以及如何添加另一個控制點。
我的另一個問題是我想添加一個帶有指向特定原子的浮動箭頭的浮動文字。
最後我希望它看起來像這樣:(我添加了另一條橙色和紫色線來顯示我想要什麼樣的線)
這是我的程式碼:
\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
這裡有兩種選擇,至少還有一種。
chemfig
建構於 之上Tikz
,因此您也可以使用 Tikz 指令。你所做的
- 給出某些座標名稱
(a) .. (f)
- 提供
\draw
路徑
使用controls
是在 Tikz 中指定貝塞爾曲線的一種方法。我發現這些參數很難想像,但如果可以的話,這是創建奇特曲線的完美方式。
不過,我提供兩種選擇:
% ~~~ straight forward replacement ~~~~~~~~~~~~~
\draw[orange,shorten >=4pt]
(f) -- ++(0,-1.7)
-- node[pos=.5,below]{Rückseitenangriff} ++(-3.5,0)
-- (e);
\draw
由 (f) -- (e)- 但在結束這條路徑之前
;
++
為下台階和側台階放置兩個新座標 ( ),描述為相對台階- 將 a
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}