(4) 反応機構 その3: さらにちょっと進んだ記述

この節は 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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です