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」「基本形」の最初の反応式(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に関してはバージョンが不明です。
このコメント欄でこのような質問ができるのがどうか、よく分からないまま質問を申し上げました。不適切な使い方であれば、ご容赦ください。
platex/TeXLive 2019 + chemfig v1.41 でも問題が発生することを確認しました。
article + pdflatex では問題は発生しておらず、graphicx / dvipdfmx 辺りの問題ではないかと思います。
TeX フォーラム https://oku.edu.mie-u.ac.jp/tex/ で質問されるとより適切な回答が得られるかもしれません。
お役に立てずに申し訳ありません。
早速の返信、有り難うございます。
ご案内のあったサイトで質問してみます。
今後ともご指導のほどお願い申し上げます。