(2) 反応機構 その1

chemfig で反応機構を書(描)くのはかなり大変です。相当泥臭い作業になりますので、まずは覚悟が必要になります 😉
latex は原則 (最低) 二回実行する必要があることに注意して下さい。

基本形

まずは簡単な形で見てみましょう。

\schemestart
\chemfig{@{edu1}A| \+ @{edu2}B} \arrow \chemfig{C}
%
\chemmove{
  \draw[->](edu1)..controls +(90:5mm) and +(90:5mm)..(edu2);
}
\schemestop

@{name} で「ノード」 (ひとまず始点・終点を指示する際の場所 (原子あるいは結合) と思っておけば良いでしょう) に名前を付けます。原子の場合はその前に書きます。この例では、A に edu1、B に edu2 という名前をつけています。A の後に付いている | はここで強制的に分離していることを示しています (ちょっと説明が難しい… この場合はここで対象分子が終わりであることを指示しています。| 有り、無しで実際にやってみると分かると思います)。

矢印は \chemmove{ } 内に書きます。 基本形は、

\draw[->]( node1 ) ..controls +( angle:pos ) and +( angle:pos ).. ( node2 );

です。 controls で二つの制御点を指定することで矢印の微調整をします。

angle はどの角度から/へ矢印を引くかを指定します。
下の例は、

  • 赤: A 45度 から B 45度 へ
  • 青: A 90度 から B 90度 へ
  • 緑: A 135度 から B 135度 へ

と指定した例です。 もちろん A と B で異なった角度を使用しても構いません。各原子 (A, B) の右を起点として、それぞれ 45, 90, 135 度から/へ矢印が書かれています。and +(\w:5mm)..(edu2) (緑背景) の部分を and +(180-\w:5mm)..(edu2) と変更すると、A 45度 から B 135度へ、等になります。

\schemestart
\chemfig{@{edu1}A| \+ @{edu2}B} \arrow \chemfig{X}
%
\chemmove{
  \foreach \w/\c in
  {45/red, 90/blue, 135/green}
  \draw[->,color=\c](edu1)..controls +(\w:5mm) and +(\w:5mm)..(edu2);
}
\schemestop

次の例は長さを変更した場合です。
赤、青、緑はそれぞれ 5mm, 10mm, 15mm を指定した場合です (角度は全て 90 度)。

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

それっぽくなりました。どのくらい短くするかはひたすらトライアンドエラーです 😉
-> のかわりに -stealth を使うとちょっとカッコいい矢印になります。

\schemestart
\chemfig{@{edu1}A| \+ @{edu2}B} \arrow \chemfig{X}
%
\chemmove{
  \draw[-stealth,shorten <=3pt,shorten >=2pt](edu1)..controls +(90:5mm) and +(90:5mm)..(edu2);
}
\schemestop

二重結合などから出る矢印も書けます。ノード名の定義のしかたがちょっと違うだけで、それ以外は基本形と同じです。

\schemestart
\chemfig{A=[@{db}]B \+ @{edu3}C} \arrow \chemfig{X}
%
\chemmove{
  \draw[->,shorten <=3pt,shorten >=2pt](db)..controls +(90:5mm) and +(90:5mm)..(edu3);
}
\schemestop

“(2) 反応機構 その1” への3件の返信

  1. このサイトに書かれている「(2) 反応機構 その1」「基本形」の最初の反応式(A+B→C)がうまく描画できずに困っています。ソースファイルの内容は以下の通りです(このサイトの内容をコピペしたもの)。
    \documentclass{jsarticle}
    \usepackage[dvipdfmx]{graphicx}
    \usepackage{chemfig}
    \begin{document}
    \schemestart
    \chemfig{@{edu1}A| \+ @{edu2}B} \arrow \chemfig{C}
    %
    \chemmove{
    \draw[->](edu1)..controls +(90:5mm) and +(90:5mm)..(edu2);
    }
    \schemestop
    \end{document}
    これをコンパイルすると、AからBに描かれるべき円弧状の矢印が、Cの右隣に描かれます。現象からすると (edu1)(edu2)の座標の値を記憶していないようです。
    最近ChemFigを始めたばかりの初心者なので、どこに原因があるのか皆目見当が付きません。ご教示の程よろしくお願い申し上げます。
    使用環境は奥村晴彦著「LaTex美文書作成第7版」のDVDをインストールしたもので、tevlive2017, chemfig V1.2eです。Tikzに関してはバージョンが不明です。
    このコメント欄でこのような質問ができるのがどうか、よく分からないまま質問を申し上げました。不適切な使い方であれば、ご容赦ください。

    1. platex/TeXLive 2019 + chemfig v1.41 でも問題が発生することを確認しました。
      article + pdflatex では問題は発生しておらず、graphicx / dvipdfmx 辺りの問題ではないかと思います。
      TeX フォーラム https://oku.edu.mie-u.ac.jp/tex/ で質問されるとより適切な回答が得られるかもしれません。

      お役に立てずに申し訳ありません。

      1. 早速の返信、有り難うございます。
        ご案内のあったサイトで質問してみます。
        今後ともご指導のほどお願い申し上げます。

コメントを残す

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