(2) 反応機構 その1
chemfig
で反応機構を書(描)くのはかなり大変です。相当泥臭い作業になりますので、まずは覚悟が必要になります ;-)
latex
は原則 (最低) 二回実行する必要があることに注意して下さい。
(u)platex + dvipdfmx (TeX Live 2019, 2024 にて確認) ではうまく動作しないようです (矢印の位置が正しい位置に描画されない)。
日本語文書で反応機構を描きたい場合は LuaLaTeX の使用をおすすめします。
日本語環境での注意点
基本形
まずは簡単な形で見てみましょう。
\schemestart
\chemfig{@{edu1}A} \+ \chemfig{@{edu2}B} \arrow \chemfig{C}
%
\chemmove{
\draw(edu1)..controls +(90:6mm) and +(90:6mm)..(edu2);
}
\schemestop
@{name}
で「ノード」 (ひとまず始点・終点を指示する際の場所 (原子あるいは結合) と思っておけば良いでしょう) に名前を付けます。
原子の場合は その前 に書きます。この例では、A に edu1
、B に edu2
という名前をつけています。
矢印は \chemmove{ }
内に書きます。 基本形は、
\draw( node1 ) ..controls +( angle:pos ) and +( angle:pos ).. ( node2 );
です。 controls
で制御点を指定することで矢印の微調整をします。
angle
はどの角度から/へ矢印を引くかを指定します。
角度は原子 (ノード) の右を起点 (0 度) とします。
下の例は、
- 赤 : A 45 度 から B 45 度 へ
- 青 : A 90 度 から B 90 度 へ
- 緑 : A 135 度 から B 135 度 へ
と指定した例です。 もちろん A と B で異なった角度を使用しても構いません。
and +(\w:6mm)..(edu2)
の部分を and +(180-\w:6mm)..(edu2)
と変更すると、A の 45 度 から B の 135 度へ、等になります。
\schemestart
\chemfig{@{edu1}A} \+ \chemfig{@{edu2}B} \arrow \chemfig{X}
%
\chemmove{
\foreach \w/\c in {45/red, 90/blue, 135/green} {
\draw[color=\c](edu1)..controls +(\w:6mm) and +(\w:6mm)..(edu2);
}
}
\schemestop
次の例は長さを変更した場合です。 赤、青、緑はそれぞれ 5 mm, 10 mm, 15 mm を指定した場合です (角度は全て 90 度)。
\schemestart
\chemfig{@{edu1}A} \+ \chemfig{@{edu2}B} \arrow \chemfig{X}
%
\chemmove{
\foreach \l/\c in {5mm/red, 10mm/blue, 15mm/green} {
\draw[color=\c](edu1)..controls +(90:\l) and +(90:\l)..(edu2);
}
}
\schemestop
角度、位置の調整はひたすらトライアンドエラーです。普通の人はこの辺で嫌になると思います ;-)
さて、最初の例では矢印の始点・終点が原子にくっついてカッコ悪いので、改良します。
具体的には shorten
を使って矢印を短くします。 <=
で始点を、 >=
で終点を指定しています。
\schemestart
\chemfig{@{edu1}A} \+ \chemfig{@{edu2}B} \arrow \chemfig{X}
%
\chemmove{
\draw[shorten <=3pt,shorten >=2pt](edu1)..controls +(90:6mm) and +(90:6mm)..(edu2);
}
\schemestop
それっぽくなりました。どのくらい短くするかはひたすらトライアンドエラーです ;-)
二重結合などから出る矢印も書けます。ノード名の定義のしかたがちょっと違うだけで、それ以外は基本形と同じです。
\schemestart
\chemfig{A=[@{db}]B} \+ \chemfig{@{edu3}C} \arrow \chemfig{X}
%
\chemmove{
\draw[shorten <=3pt,shorten >=2pt](db)..controls +(90:6mm) and +(90:6mm)..(edu3);
}
\schemestop