(5) 反応機構 その4: ラジカル反応

2014-12-25 2025-02-02

本稿は chemfig v1.66 をもとにしています。

今回は (マニュアルにすら載っていない) ラジカル反応の書きかたについて見てみます。

ひとまず片羽矢印をかいてみます。 そのためには \draw のオプションに arrows={[left]} を加えます。 [left][right] にすると書かれる (消される) 羽が逆になります1

\schemestart
\chemfig{@{edu1}A} \+ \chemfig{@{edu2}B}
\arrow
\chemfig{X}
%
\chemmove{
  \draw[arrows={[left]}](edu1)..controls +(90:5mm) and +(90:5mm)..(edu2);
}
\schemestop

\bigskip

\schemestart
\chemfig{@{edu3}C} \+ \chemfig{@{edu4}D}
\arrow
\chemfig{Y}
%
\chemmove{
  \draw[arrows={[right]}](edu3)..controls +(90:5mm) and +(90:5mm)..(edu4);
}
\schemestop

電子は \charge または \Charge で書けます。 なお、 \charge\Charge は、電子がバウンディングボックスに含まれない/含まれる点が異なります:

さて、以下の例では A の不対電子を右側に書いているので、その辺りから矢印を出るようにするため、制御点の基準位置を指定します。 具体的には、 (edu1) の部分を (edu1.0) と書くことで、edu1 の 0 度の位置を基準にしています。

\schemestart
\chemfig{@{edu1}\Charge{0=\.}{A}} \+ \chemfig{@{edu2}B}
\arrow
\chemfig{X}
%
\chemmove{
  \draw[arrows={[left]}] (edu1.0)..controls +(90:5mm) and +(90:5mm)..(edu2);
}
\schemestop

さて、ここからが苦行です (笑)。

矢印を電子から出ているよう見せるために、いろいろパラメータをいじります。 基本、ひたすらトライアンドエラーです。

\schemestart
\chemfig{@{edu1}\Charge{0=\.}{A}} \+ \chemfig{@{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}\Charge{0=\.}{A}} \+ \chemfig{@{edu2}B}
\arrow
\chemfig{X}
%
\chemmove{
  \draw[arrows={[left]},shorten <=1pt,shorten >=2pt]
  (edu1.20)..controls +(60:5mm) and +(120:5mm)..(edu2);
}
\schemestop

あんまり変わらないですかね (笑)。まぁお好みで。

さて、もう少し実際的 (?) な例を書いてみると、こんな感じでしょうか。 が、正直コードは「汚い」です。この例では \+ と Y の間に仮想的な原子 (ここでは適当に \phantom{OO} としました) を置いて、そこに矢印がくるようにしてます。

\schemestart
\chemfig{@{x}\charge{0=\.}{X}} \+ \chemfig{@{null}\phantom{OO}} \chemfig{Y-[@{bind},0.75]@{z}Z}
\arrow
\chemfig{X-[:0,0.75]Y} \+ \chemfig{\charge{180=\.}{Z}}
%
\chemmove{
  \draw[arrows={[left]},shorten <=3pt]
  (x.0)..controls +(60:5mm) and +(120:5mm)..(null.135);
  %
  \draw[arrows={[right]},shorten <=3pt]
  (bind)..controls +(100:5mm) and +(60:5mm)..(null.45);
  %
  \draw[arrows={[left]},shorten <=3pt,shorten >=3pt]
  (bind)..controls +(80:4mm) and +(110:4mm)..(z.90);
}
\schemestop

最後に、もうちょっときちんとした例を書いてみます。 この例では、

\usetikzlibrary{calc}

が必要になりますので、いずれもプリアンブル (の \usepackage{chemfig} よりも後ろ) に書いておいて下さい (前回記事 参照)。

\setchemfig{atom sep=2em}
\schemestart
\chemfig{*6(---@{C}(-[@{sb}]@{H}H)---)}
\hspace{16pt}
\chemfig{@{Cl}\Charge{180=\.}{Cl}}
\arrow{->[][$-$\chemfig{HCl}]}[,1.2]
%
\chemmove{
  \draw[arrows={[right]},shorten <=3pt,shorten >=2pt]
  (sb)..controls +(100:3mm) and +(100:5mm)..(C);
  \draw[arrows={[left]},shorten <=3pt,shorten >=0pt]
  (sb)..controls +(-70:5mm) and +(-135:5mm)..($(H)!0.45!(Cl)$);
  \draw[arrows={[left]},shorten <=3pt,shorten >=0pt]
  (Cl.180)..controls +(60:5mm) and +(35:5mm)..($(H)!0.55!(Cl)$);
}
%
\chemfig{*6(---(-[,.2,,,draw=none]@{r}\Charge{0=\.}{})---)}
\arrow{->[\chemfig{@{Cl1}Cl-[@{sbCl},1.5]@{Cl2}Cl}][$-$\chemfig{\Charge{0=\.}{Cl}}]}[,1.5]
%
\chemmove{
  \draw[arrows={[left]},shorten <=2pt,shorten >=2pt]
  (r)..controls +(90:5mm) and +(110:5mm)..($(r)!0.45!(Cl1)$);
  \draw[arrows={[right]},shorten <=3pt,shorten >=2pt]
  (sbCl)..controls +(100:5mm) and +(70:5mm)..($(r)!0.55!(Cl1)$);
  \draw[arrows={[left]},shorten <=3pt,shorten >=2pt]
  (sbCl)..controls +(80:5mm) and +(110:5mm)..(Cl2);
}
%
\chemfig{*6(---(-Cl)---)}
\schemestop

1

なお [left][harpoon], [right][harpoon,swap] と書くこともできます。