TeXで分子構造式を描くパッケージ「chemfig」

分子の構造式をパソコンで入力するのって,とーってもメンドウですよね。特に理系でレポートやペーパーを書くのにTeXをバリバリ使う人なら,構造式を描くのにわざわざマウスを使いたくないはず。

TeXで化学式を描こう

以前から紹介している「TikZ」という図形描画パッケージがありますが,この「TikZ」を内部で描画処理に使用して化学構造式を描く「chemfig」というパッケージがあります。これを使えば,「原子と原子の位置関係」を「文字の大きさや線の太さや原子間の間隔」のような情報と完全に切り離して記述できるので,別の場所での再利用がものすごく容易になります。

ダウンロードとインストール

LinuxやMacでTeXを使っている人はおそらくTeX Liveを利用していますので,chemfigはデフォルトで入っています。別途インストール必要はありません。以下は,WindowsでW32TeXを使っている人のための説明です。

まずCTANのchemfigのページにアクセスします。

chemfigdl

上のスクリーンショット(2013年7月21日現在)で赤く囲った枠中にある「Download」というリンクをクリックして,「chemfig.zip」をダウンロードします。

ダウンロードしたzipファイルを展開します。展開してできたフォルダーの中の「chemfig.sty」「chemfig.tex」「t-chemfig.tex」の3ファイルを適切な場所にコピーします。「適切な場所」というのはW32TeXをインストールした場所によって変わりますが,たとえば,W32TeXを「C:\w32tex」というフォルダーにインストールしたのであれば,「C:\w32tex\share\texmf\tex\latex」の中に「chemfig」というフォルダーを作って,「chemfig.sty」「chemfig.tex」「t-chemfig.tex」の3ファイルをそこにコピーしてください。W32TeXのインストール場所が「C:\w32tex」でない場合も,これと同じような位置関係のフォルダーを作ればいいと思います。

ファイルをコピーしただけではTeXのプログラムはそれを認識してくれません。そこで[Win]キー+[R]キーなどで「ファイル名を指定して実行」を開きます。「mktexlsr」と入力して「OK」を押すと,コマンドプロンプトが開いて処理が実行されます。これが終わるとTeXからchemfigパッケージが使えるようになっています。

動作確認

次のサンプルコードをコンパイルしてみてください。


2013-07-21 17_40_26-chemfig-test-1.pdf - TeXworks

上のようなアデニンが得られたらchemfigパッケージが正しくインストールされています!

残念ながらこのchemfigの情報,日本語ではほとんど見つかりませんね。しかし英語の公式マニュアルがとても充実しています。それほど難しい英語ではなく,サンプルコードとその出力結果の例がたくさん載っているので,多分理解できるとおもいます: chemfig_doc_en.pdf

[LaTeX]フォントを使わずセンター試験丸数字

塾の先生をするとき,授業で使うプリントを作らないければならなかったりします。そんなとき,センター試験の問題を取り上げるなら,ただの丸数字じゃなくて,センター試験本試の選択肢に使われるような,縦長の丸数字をTeXでも使いたくなりますよね!
その解決方法としては,フォントを作るのが一般的なようで,こことかが参考になりますが,フォントファイルを使うとインストールが難しく,可搬性が著しく低下してしまうので,ここではスタイルファイル(.sty)だけで完結した,お手軽パッケージを作りました。

インストール

まず,https://raw.github.com/staureus/jacntmrk/master/jacntmrk.styをパソコンに保存します。例えばIEなら,上のリンクを右クリックして,「対象をファイルに保存」を選択します。

続いて,ダウンロードした「jacntmrk.sty」をLaTeXが認識できる場所に移動させます。例えば,一番簡単な「LaTeXが認識できる場所」は,「jacntmrk.sty」を使いたいTeXファイル(.tex)と同じディレクトリ(同じフォルダー)です。

プリアンブルに書くこと

jacntmrk.styは,丸数字を描画するのにTikZを使用しているため,使っているTeX環境によってドライバーを指定する人があります。ただ,直接TikZのドライバーを指定しなくても,graphicxのオプションで指定しておけば,勝手にTikZが判断してくれます。つまり,次のようにプリアンブルに書きます。
日本語でLaTeXを書いている人は最近たいていがdvipdfmxを使っているので,まずはdvipdfmxを使う場合から

また,dvipsを使う場合はこうなります。

使い方

の形で,縦長の丸の中にxが入ったものを表示します。
xとして有効なのは,今のところ,「0」「1」「2」「3」「4」「5」「6」「7」「8」「9」「a」「b」「c」「d」「e」「-」「\pm」「±」のみで,それ以外は中身のない丸になります。

サンプル

文字の大きさや,文字の色に従って,いろいろ都合よく変化してくれます。\labelenumiを\renewcommandをすれば,箇条書きの部分を

2013-04-28 00_49_48-centermark.pdf - TeXworks
(クリックで拡大します。)

[LaTeX]綺麗な下付きルビを出力

小学生相手の文章を書くならともかく,TeXで作るような文章には普通はあまりルビなんて使いませんが,でもどうしても読んでもらえなさそうな難しい漢字なんかには,後ろにカッコ書きで読み方を書くよりはルビを振ったほうがかっこいいよね。

普通の漢字の上に付けるルビは,大抵の日本語LaTeX環境に入っている,okumacro.styを使って,プリアンブルに

と書き,ルビを振りたいところで,

と打てば,
\ruby{漢字}{ルビ}
という出力が得られます。

下付きルビがほしい

普通漢字の読み仮名が欲しいときは,漢字の上にルビを振りますが,たとえば補足説明をする時など,文字の下側にルビを振りたくなることがあります。探していたら下のサイトが見つかりました。

上のサイトからの引用をすると(画像です)
下付ルビ - insomnia
これをプリアンブルに書けば,下付きルビを出力するコマンド \uruby が使えるようになります。

殺伐としたTLに
綺麗にできますね。

しかしながら,多少問題点があります。例えば,ルビの文字数が親文字の数以下のとき,

亜米利加 百舌鳥
このように,\ruby\urubyでルビの位置が異なります。どちらかと言えば,\rubyの位置のほうが綺麗。

また,\Hugeのように,本文中で文字のサイズを変更したとき,

殺伐
\rubyでは親文字の大きさに合わせて,ルビの文字の大きさも変更してくれますが,\urubyでは残念なことになってしまっています。

自分で作った

insomniaさんの\urubyを参考にしながら,okumacro.sty\rubyをベースに,\urubyコマンドを作り直しました。

これをプリアンブルに書いておけば,

2013-04-22 00_34_59-test.pdf - TeXworks
というように,\rubyと同じ挙動をします。
また,

2013-04-22 00_35_49-test.pdf - TeXworks
振り仮名の文字の大きさについては,\rubyと同じ挙動です。ただ,親文字のアルファベットの単語の前後に,\rubyではスペースが入っていますが,\urubyでは入りませんね。これは,上にルビを置くときと下にルビを置くときで,文字の配置方法が全く異なるためですが,うまい解決方法が見つからないのでとりあえずこれで良しとさせてください。コメントでいいやり方を教えていただけると助かります。

なお,このページで紹介した\urubyのコードはご自由に使っていただいて構いません。

1 2 3