(1) $\LaTeX$ で化学式を書(描)いてみる
2014-03-25
2025-02-01
Table of contents
本稿は chemfig v1.66 をもとにしています。
日本では XyMTeX が主流 (?) のようですが1、新しく始めるなら chemfig をおすすめします。(そもそも $\LaTeX$ で化学記号を描くべきか、という話は置いておこう)
chemfig の特徴
-
TikZ をベースとしている
- 柔軟性が高い (高すぎる、とも言えるけど…)
- PDF 等との親和性が高い
- 古い環境だと苦労するかも? (picture 環境じゃないとイヤ、という人には向かない?)
- 複雑なことをしようとすると TikZ の知識が必要になる (あまり複雑なことしなければ、なくてもどうにかなります)
-
(比較的) 簡単に描ける
- 再帰の考え方ができれば、基本的なものは割とラクに描けます
- 「まだ使ったことがない」という方は、doraTeX 氏による chemfigパッケージによる構造式描画 (TeX & LaTeX Advent Calendar 2014 12日目) がコンパクトにまとまっていてオススメ
- その後は 日本語版 chemfig マニュアル を読んでみましょう
-
可読性は低い
- XyMTeX も似たりよったりですが
例
\usepackage{chemfig}
して以下のコードを描くと、それぞれ描画されるはず。(pdfLaTeX 使用)
トリニトロトルエン
フルオレン
サリチル酸 二量体
テトロドトキシン
XyMTeX では描けないらしいですが、 chemfig なら (なんとか) 描けます。 以下のコードでは重なってる線の処理のために、かなり泥臭いことをしてます。 重なりを無視してよければ、もう少しシンプルに書けるはず。
\newlength{\bond}
\newlength{\bondw}
\setlength{\bond}{1.5pt}
\setlength{\bondw}{3\bond}
\def\bgcolor{white}
\setchemfig{cram width=\bond}
\chemfig{%
?[a]
(-[:60]-[0]OH)
(-[6]OH)
-[:170]?[b]-[:230]?[c]-[:10]
%
(<[:230]\chembelow{N}{H}-[:170,,,,line width=\bond]
(=[:230]HN)
>[:190]HN-[:50]?[c]
(-[:190]HO))
%
(-[:-10,,,,\bgcolor,line width=\bondw])-[:-10]
(<[:5]OH)-[:50]?[a]
(-[2,,,,\bgcolor,line width=\bondw]\phantom{O})
(-[2]O-[:170]
(-[2]OH)
(-[:190]O?[b])
(<[:230]
(-[:170,,,,\bgcolor,line width=\bondw])
(-[:170]HO)
(-[6,,,,\bgcolor,line width=\bondw])
(-[6,,,,line width=\bond])
(>[:50])%redraw
))}
B12
頑張ればこんなのも描けます (嬉しいかどうかは別にして)
\setchemfig{cram width=2pt}
\chemfig{Co\rlap{${}^+$}(?[f])(-[2]CN)
%
(-[7,,,,<-]N*5(=(?[d])-(<:-[::60]-[::-60](=[::-60]O)-[::60]NH_2)
-(<[::-39]CH_3)(<:[::-69]CH_3)-?[a]-))
%
(-[1,,,,<-]N*5(=(-[,0.6]?[a,{=}])
-(<:-[::-60]-[::60](=[::60]O)-[::-60]NH_2)
-(<[::-84]-[::60](=[::60]O)
-[::-60]NH2)(<:[::-24,,,1]CH_3)-?[b]-))
%
(-[3,,,,<-]N*5(=(-[,0.6]?[b,{=}](-[::60]CH_3))
-(<:-[::-60]-[::60](-[::60]H_2N)=[::-60]O)
-(<[::-84]-[::-60](-[::60]H_2N)=[::-60]O)(<:[::-24]H_3C)
-?[c](<:[::-90]H_3C)
-))
%
-[5]N*5(-(?[c])(<[::0]H)
-(<-[::-60](-[::60]H_2N)=[::-60]O)
-(<[::-24]CH_3)
(<:[::-84]
-[::60]-[::-60](=[::-60]O)-[::60]NH-[::-60]-[::60]
(<:[::60,0.7]CH_3)-[::-60]O
-[::60]P(=[::90]O)(-[::-90]HO)-[::0]O
-[6]*5([::36]-(-[6]-[::-60]HO)<O>
(-[2,4.7]N*5([::-18]-(*6(=-(-CH_3)=(-CH3)-=-))
--N(?[f,,{dash pattern=on 1pt off 0.8pt}]\phantom{N})=-))
-(-[2,,,2]HO)-))
%
-(=[,0.6](?[d])-[::-60]CH_3)-)}
1
最初にこの記事を書いた当時 (2014年頃) の印象です。現在は chemfig が主流なのでしょうか。