化学・英語が苦手な方のためのchemfigシリーズ第5弾です。
電子の移動などをを表す矢印を描く\chemmoveの使い方を説明します!
*注意!!
この記事を書いている人は化学を専攻としていません。(むしろ苦手)
作図する構造式・反応式は高校化学~大学化学基礎までとします。
今回学習する範囲は公式ドキュメントでいうと「Representing electron movements~Reaction mechanisms」あたりです。
スポンサーリンク
ベジェ曲線とは?
\chemmoveの前にベジェ曲線を説明します。このベジェ曲線の描き方をつかめば、\chemmoveは7割理解したといってもいいくらいです。
以下の動画を見てください。始点と終点(アンカー)を結ぶ線を引いて、制御点(ハンドル)を動かすことで曲線を自在に動かしていることが分かります。これがベジェ曲線です。
直観的にいうとハンドルの直線が右に動くほど曲線は右に傾き、反対側のハンドルに近づくという感じです。
tikzでベジェ曲線を描くには以下の形式で書きます。
この制御点は直交座標でも極座標でも大丈夫ですが、書いて分かるようにchemfigは座標を意識していないので角度の長さで指定する極座標を使うのがベターだと思います。動画はillustratorで描いたものですが、もちろんpythonでも作ることができます。
以下のサイト様では、ベジェ曲線をインタラクティブに動かす方法が書いてあります。(こちらは直交座標なので極座標では「rad = np.pi/180」をつけるなどの工夫が必要になります)
\chemmoveの使い方
ほぼtikzのベジェ曲線と同じです。最後の「;」をつけ忘れないように注意してください、
例としてフェノキシドイオンの共鳴構造式を挙げて説明します。
\schemestart
\chemfig{@{x1}\charge{[circle]-90=\:,90=\:, 0=\:, 45:1.5pt=$\scriptstyle-$}{O} -[@{x2}::180]*6(@{x3}-@{x4}=-=-=)} \qquad
\arrow{<->}
\hspace{0.5cm}
\schemestop
\chemmove{\draw[shorten <=5pt](x1.90).. controls +(90:0.6cm) and +(100:0.6cm).. (x2.0); \draw($(x3)!0.5!(x4)$).. controls +(45:0.6cm) and +(45:0.6cm).. (x4);}
\schemestart
\chemfig{\charge{[circle]-45=\:, 45=\:}{O} =[::180]*6(-@{y1}\charge{[circle] 45=\:}{}-@{y2}=@{y3}-=-)}
\arrow{<->}
\schemestop
\chemmove[shorten <=5pt]{\draw(y1).. controls +(100:1cm) and +(100:1cm) ..($(y1)!0.5!(y2)$);}
\chemmove{\draw($(y2)!0.5!(y3)$).. controls +(180:1cm) and +(170:1cm) ..(y3);}
\vspace{1cm}
\par
\schemestart
\chemfig{O =[::180]*6(-=-@{z1} \charge{[circle] 180=\:}{}-@{z2}=@{z3}-)}
\arrow{<->}
\chemfig{O =[::180]*6(-=-=-\charge{[circle] -45=\:}{}-)}
\schemestop
\chemmove[shorten <=5pt]{\draw(z1.180).. controls +(140:1cm) and +(160:1cm) ..($(z1)!0.5!(z2)$);}
\chemmove{\draw($(z2)!0.5!(z3)$).. controls +(300:0.7cm) and +(300:0.7cm) ..(z3);}
@{x1}や@{z3}は始点または終点を表す名前です。ベジェ曲線の始点・終点に該当し、z1の始点の方向を変えるときは(z1.180)とします。
また、$(y1)!0.5!(y2)$はy1y2の中点です(線分y1y2のt:(1-t)内分点(0<t<1)は($(y1)!t!(y2)$)と表し、中点の場合t=0.5になる)
注意したいのが1つの化合物ごとに1つの\chemoveを使用するということです。
1つの化合物に複数の矢印をつける場合は{}の中にまとめ、たとえ同じ行にあっても
反応の矢印がある場合は\chemmoveを分けて書かなくてはなりません。
コンパイルした結果はこちら。

今回はここまで。次回は\chemnameです!
スポンサーリンク
参考にしたサイト様
公式ドキュメント様
https://www.ctan.org/pkg/chemfig
ベジェ曲線とtikz
https://hitgot.org/archives/drawing-in-tex-by-tikz-3/