「化学構造式を LaTeX に取り込むパッケージ」の補足
昨日の補足。この chemobabel.sty は、\smilesobabel だけを定義した smilesobabel.sty というパッケージ(個人的に12月1日から制作開始)をもとに、急遽 Advent Calendar 用に12月4日から本格的に作業を始めたにすぎない。しかも、パッケージを作っていた時間よりもドキュメントを充実させるために費やした時間の方が長かった。というわけで、その辺の裏話をここで。
ChemSpider から仕入れた Buckminsterfullerene の SMILES 表記から \smilesobabel で変換して生成。いわゆるサッカーボール型もきれいにできた!
Open Babel の機能を最大限活用!
パッケージ開発という点からもドキュメント充実という点からも、Open Babel のドキュメントや実例を調べることが必須であった。最も重要だったのが先日発覚した
の問題である。これを回避する手っ取り早い方法は catcode の変更であるが、ここで \ の代わりにエスケープ文字をどう設定するかという問題が生じる。そこで
にざっと目を通し、どの文字が SMILES 表記法で使われないか調べた。どうやら ~ が使われないように見受けられたので、これなら無難だろうと考えて早速取り入れた。ただし今のところ
うわっ…、LaTeXユーザにcatcodeの変更のコードを書かせている……!? #TeX #chemナントカ
— ZR-TeXnobabbler(既定値) (@zr_tex8r) 2014, 12月 8
分かってはいたけれど、すぐにマクロ書けそうになくて保留していた*1ので…
@zr_tex8r 実際問題、化学やっていてSMILES表記を使うことはまずないので、実用面からもChemDrawからの変換を推奨したつもりです。むしろ本パッケージはそちらが目玉ですので。「腕に覚えのある TeXnician の方々はどうぞご協力ください。」です!
— Acetaminophen (@aminophen) 2014, 12月 8
また、Open Babel のドキュメントをもう少し詳しく読んでいると
のようなオプションの付加例が見つかった。これをパッケージでも実装すれば出力の幅が広がるので早速取り入れ、自動生成でも原子の表示方法や色の変更程度のカスタマイズなら可能なことを示した。
footnotebackref パッケージが便利!
そういえば、chemobabelのドキュメントでは、footnotebackrefというパッケージを使いました。本文から脚注へのジャンプの逆、つまり脚注から本文へのジャンプをリンクするパッケージです。2012年に発表されたパッケージですが、あまり日本では知名度が高くないですね。
— Acetaminophen (@aminophen) 2014, 12月 8
これは非常に便利。\usepackage{footnotebackref} だけで勝手に脚注から本文への逆リンクが可能になるというもので、マークを少しだけカスタマイズできる。
化学と TeX の関連性
単に LaTeX で構造式を取り込めるという情報提供だけなら何も特別なことはない。しかし、今回はそこにとどまらず一定の問題提起ができたのではないかと考えている。
現在の日本の化学界では「化学を TeX で」はごく少数派である。それゆえに情報量が極端に少なく、化学界の人間が TeX について知る由もない。そのうえ「化学といえば有機化学」とでも言わんばかりに、日本の多くの化学サイトは有機化学の情報であふれていて視野が狭い。有機化学で必須の構造式描画ソフトについても ChemDraw 一色で、スタンドアロンであればクロスプラットフォームで自由に利用できる Marvin Sketch もほとんど知られていない。無機化学や分析化学、計算化学のような分野が世間一般に知られることはほとんどなく、国際的に開発が進められている Open Babel のような優れたプロジェクトを紹介した日本語サイトはほぼ皆無である。
一方で TeX 界の方はというと、化学に対してはほとんど無頓着で、それゆえ化学界の事情など知る由もない。TeX で化学をやりたければ XyMTeX で構造式を描けるから問題ないというのは大間違いで、需要は XyMTeX のような描画機能だけにとどまらないのであり、それには化学特有のフォーマットが必須なのである。
そのような事情から、今回の記事執筆にあたり、ドキュメントの内容の充実は大きな課題であった。そういうわけで
という項目を作成すると同時に chemobabel.pdf というパッケージドキュメントを書くことで少しだけ是正しようと試みたつもりである。少しでもこの状況が改善されることを願っている。
ちなみに…
Ver.0.3 のドキュメントの末尾には SMILES 表記法から Open Babel が生成する構造式が間違っている例を載せた。なぜこんなものを発見したかというと、きっかけは以下の記事である:
ここで「化学発光」を取り上げたとき、ついでに自作の \smilesobabel を使ってホタルルシフェリンの構造式を出すつもりだったが、よく見ると ChemSpider のページからコピーしただけの SMILES 表記から生成した構造式が ChemSpider の例示画像と異なっていたのだ。以下が正しい構造。
その前の
でネタにした bohr パッケージに続き突然の TeX ネタを挟もうとして、思わぬ発見。
冒頭に示したフラーレンの PDF ファイルとソースは以下:
この PDF ファイルには、自作 chemobabel パッケージで SMILES 表記から変換して得たフラーレンの構造式のほかに、先日書いた「media9 を ZR さん作の bxexpl3ptex によって platex + dvipdfmx に通す方法」を用いて、Jmol から出力した U3D ファイルを埋め込んだ。つまり、二次元的に描画したフラーレンの構造式とその 3D モデルを一ページでみることができる。なかなかいい出来。
ただし、Mac 版 Open Babel 2.3.2 では SMILES 変換の結果がおかしなことになった。Windows 版 Open Babel 2.3.2 を用いた結果と比較してほしい。
フラーレンの3次元データの元は Carbon Molecules Page から入手した PDB ファイル。
*1:ドキュメントの To do に書いたとおり。