この節は chemfig よりはむしろ Tikz の解説になってしまいます。
これまでの説明で基本的な反応機構は書けると思いますが、ちょっとやっかいなのは「何もないところ」から/へ矢印を書きたい場合 (例えば Diels-Alder 反応など) です:
まずプリアンブル (の \usepackage{chemfig}
より後) に、
\usetikzlibrary{calc}
が必要になりますので、忘れずに書いておいて下さい。
以下の例では、ノード名を以下のように付けています (二重結合のノード名は省略)。
最初の図を描くために、炭素原子 C14 と炭素原子 C22 の中点へ矢印を書く、と考えるとうまくいきそうです。これは、
\draw(db34)..controls +(60:3mm) and +(120:3mm)..($1/2*(C14) + 1/2*(C22)$);
のように書くことができます。
また、ここではあまり意味はありませんが、
\draw(db34)..controls +(60:3mm) and +(120:3mm)..($(C14)+(10pt,10pt)$);
のようにして、特定のノードからの相対位置を指定することもできます:
\setchemfig{atom sep=2em}
\schemestart
\chemfig{*6(=-=[@{db}]-=-)}
%
\chemmove{
\draw[->,draw=red] (db)..controls +(0:3mm) and +(90:3mm)..($(db)+(20pt, 20pt)$);
\draw[->] (db)..controls +(0:3mm) and +(90:3mm)..($(db)+(20pt, 0pt)$);
\draw[->,draw=blue] (db)..controls +(0:3mm) and +(90:3mm)..($(db)+(20pt,-20pt)$);
}
\schemestop
さて、最初の図は、以下のようにすると書けます。
\setchemfig{atom sep=2em}
\schemestart
\chemfig{*6(=[@{db34}]%
@{C14}-[,,,,draw=none]
=[,,,,draw=none]
-[,,,,draw=none]
@{C11}=[@{db12}]
-[@{sb}])}
\,\,
\chemfig{@{C22}=[@{db}:90]@{C21}}
\arrow
\chemfig{*6(-----=)}
%
\chemmove[->,shorten <=3pt,shorten >=2pt]{
\draw(db34)..controls +( 60:3mm) and +( 120:3mm)..($1/2*(C14)+1/2*(C22)$);
\draw(db) ..controls +(180:3mm) and +(-120:3mm)..($1/2*(C11)+1/2*(C21)$);
\draw(db12)..controls +(-60:3mm) and +( 0:3mm)..(sb);
}
\schemestop
また、全く同じ結果になりますが、
\draw(db34)..controls +( 60:3mm) and +( 120:3mm)..($(C14)!0.5!(C22)$);
\draw(db) ..controls +(180:3mm) and +(-120:3mm)..($(C21)!0.5!(C11)$);
とすることもできます。これは「ノード C14 とノード C22 を結ぶ線分の 0.5 の位置」(つまり中点) を示します (0 が C14, 1 が C22)。
以下の例を見ると分かりやすいでしょうか。赤黒青がそれぞれ 0.3, 0.5, 0.7 を指定した場合です。
\schemestart
\chemfig{*6(=[@{db34}]
@{C14}-[,,,,draw=none]
=[,,,,draw=none]
-[,,,,draw=none]
@{C11}=[@{db12}]
-[@{sb}])}
\,\,
\chemfig{@{C22}=[@{db}:90]@{C21}}
%
\chemmove[->,shorten <=3pt]{
\draw[red] (db34)..controls +(60:3mm) and +(120:3mm)..($(C14)!0.3!(C22)$);
\draw (db34)..controls +(60:3mm) and +(120:3mm)..($(C14)!0.5!(C22)$);
\draw[blue](db34)..controls +(60:3mm) and +(120:3mm)..($(C14)!0.7!(C22)$);
}
\chemmove{
\draw[-,dotted] (C14) -- (C22);
}
\schemestop