今回は (マニュアルにすら載っていない) ラジカル反応の書きかたについて見てみます。
まず片羽矢印を書くのにプリアンブル (の \usepackage{chemfig}
よりも後ろ) に、
\usetikzlibrary{arrows,arrows.meta}
を追加する必要があります。
ひとまず片羽矢印をかいてみます。そのためには \draw
のオプションに arrows={->[left]}
を加えます。[left]
(または [harpoon]
) を [right]
(または [harpoon,swap]
) にすると書かれる (消される) 羽が逆になります。
\schemestart
\chemfig{@{edu1}A| \+ @{edu2}B}
\arrow
\chemfig{X}
%
\chemmove{
\draw[arrows={->[left]}](edu1)..controls +(90:5mm) and +(90:5mm)..(edu2);
}
\schemestop
\bigskip
\schemestart
\chemfig{@{edu3}C| \+ @{edu4}D}
\arrow
\chemfig{Y}
%
\chemmove{
\draw[arrows={->[right]}](edu3)..controls +(90:5mm) and +(90:5mm)..(edu4);
}
\schemestop
電子は \lewis
または \Lewis
で書けます。
なお、\lewis
と \Lewis
は、電子が box に含まれない/含まれる点が異なります:
さて、以下の例では A の不対電子を右側に書いているので、その辺りから矢印を出るようにするため、制御点の基準位置を指定します。具体的には、(edu1)
の部分を (edu1.0)
と書くことで、edu1 の 0 度の位置を基準にしています。
\schemestart
\chemfig{@{edu1}\Lewis{0.,A}| \+ @{edu2}B}
\arrow
\chemfig{X}
%
\chemmove{
\draw[arrows={->[left]}] (edu1.0)..controls +(90:5mm) and +(90:5mm)..(edu2);
}
\schemestop
さて、ここからが苦行です (笑)。
矢印を電子から出ているよう見せるために、いろいろパラメータをいじります。基本、ひたすらトライアンドエラーです。
\schemestart
\chemfig{@{edu1}\Lewis{0.,A}| \+ @{edu2}B}
\arrow
\chemfig{X}
%
\chemmove{
\draw[arrows={->[left]},shorten <=3pt,shorten >=2pt]
(edu1.0)..controls +(60:4mm) and +(120:5mm)..(edu2);
}
\schemestop
まぁ、こんなとこでしょうか。こだわると際限がなくなるので、ある程度のところで妥協するのが良いと思います (笑)。上では制御点の基準位置を 0 度にしましたが、実際には角度を付けた方が綺麗になるかもしれません:
\schemestart
\chemfig{@{edu1}\Lewis{0.,A}| \+ @{edu2}B}
\arrow
\chemfig{X}
%
\chemmove{
\draw[arrows={->[left]},shorten <=1pt,shorten >=2pt]
(edu1.20)..controls +(60:5mm) and +(120:5mm)..(edu2);
}
\schemestop
あんまり変わらないですかね (笑)。まぁお好みで。
なお、片羽矢印で stealth 形の羽を使いたいときは、小文字ではなく大文字から始まる Stealth を使う必要があるようです。
さて、もう少し実際的 (?) な例を書いてみると、こんな感じでしょうか。が、正直コードは「汚い」です。この例では + と Y の間に仮想的な原子 (ここでは適当に \phantom{o}
としました) を置いて、そこに矢印がくるようにしてます。前回のように TikZ の calc
を使った方法でも良いかもしれません。
\schemestart
\chemfig{@{x}\lewis{0.,X}| \hspace{1ex}
\+ @{null}\phantom{o}| \hspace{1ex} Y-[@{bind},0.75]@{z}Z}
\arrow
\chemfig{X-[:0]Y \+ \lewis{4.,Z}}
%
\chemmove{
\draw[arrows={-Stealth[left]},shorten <=3pt]
(x.0)..controls +(60:5mm) and +(120:5mm)..(null.135);
%
\draw[arrows={-Stealth[right]},shorten <=3pt]
(bind)..controls +(100:5mm) and +(60:5mm)..(null.45);
%
\draw[arrows={-Stealth[left]},shorten <=3pt,shorten >=3pt]
(bind)..controls +(80:4mm) and +(110:4mm)..(z.90);
}
\schemestop
最後に、もうちょっときちんとした例を書いてみます。この例では、\usetikzlibrary{arrows,arrows.meta}
に加えて、
\usetikzlibrary{calc}
も必要になりますので、いずれもプリアンブル (の \usepackage{chemfig}
よりも後ろ) に書いておいて下さい (前回記事参照)。
\setchemfig{atom sep=2em}
\schemestart
\chemfig{*6(---@{C}(-[@{sb}]@{H}H)---)}
\hspace{16pt}
\chemfig{@{Cl}\Lewis{4.,Cl}}
\arrow{->[][$-$\chemfig{HCl}]}[,1.2]
%
\chemmove{
\draw[arrows={-Stealth[right]},shorten <=3pt,shorten >=2pt]
(sb)..controls +(100:3mm) and +(100:5mm)..(C);
% \draw[arrows={-Stealth[left]},shorten <=3pt,shorten >=2pt]
% (sb)..controls +(110:10mm) and +(55:10mm)..($(H)!0.45!(Cl)$);
\draw[arrows={-Stealth[left]},shorten <=3pt,shorten >=0pt]
(sb)..controls +(-70:5mm) and +(-135:5mm)..($(H)!0.45!(Cl)$);
\draw[arrows={-Stealth[left]},shorten <=3pt,shorten >=0pt]
(Cl.180)..controls +(60:5mm) and +(35:5mm)..($(H)!0.55!(Cl)$);
% \draw[arrows={-Stealth[right]},shorten <=3pt,shorten >=0pt]
% (Cl.180)..controls +(-120:5mm) and +(-135:5mm)..($(H)!0.55!(Cl)$);
}
%%
\chemfig{*6(---(-[,.2,,,draw=none]@{r}\Lewis{0.,})---)}
\arrow{->[\chemfig{@{Cl1}Cl-[@{sbCl},1.5]@{Cl2}Cl}][$-$\chemfig{\Lewis{0.,Cl}}]}[,1.5]
%
\chemmove{
\draw[arrows={-Stealth[left]},shorten <=2pt,shorten >=2pt]
(r)..controls +(90:5mm) and +(110:5mm)..($(r)!0.45!(Cl1)$);
\draw[arrows={-Stealth[right]},shorten <=3pt,shorten >=2pt]
(sbCl)..controls +(100:5mm) and +(70:5mm)..($(r)!0.55!(Cl1)$);
\draw[arrows={-Stealth[left]},shorten <=3pt,shorten >=2pt]
(sbCl)..controls +(80:5mm) and +(110:5mm)..(Cl2);
}
%%
\chemfig{*6(---(-Cl)---)}
\schemestop