Tex, python, illusrator, VPSの学生ノート

latotex-blog

LaTeX

【日本語で学ぶchemfig】\chemfig(\setchemfig)で結合の線を調節

投稿日:







化学・英語が苦手な方のためのchemfigシリーズ第2弾です。
今回はもっとも基本的な要素である \chemfigの使い方を説明します!

*注意!!
この記事を書いている人は化学を専攻としていません。
作図する構造式・反応式は高校化学~大学化学基礎までとします。
今回学習する範囲は公式ドキュメントでいうと「最初~Length of a bond」あたりです。

ちなみに、chemfigのインストール方法については以下の記事にまとめています。

スポンサーリンク

\chemfigのデフォルト値

構造式を描くとき、構成する原子または分子がどんな状態であるかを「\chemfig」で示します。「\chemfig」ができれば、70%習得したと言っていいほど重要で基本となる命令です。
基本的には「\chemfig[オプション]{原子または分子}」という順で書きます。
共通のオプションがあれば予め 「\setchemfig{オプション}」に書いておきましょう。

★重要
\chemfig[list of <keys>=<value>]{<molecule code>}
\setchemfig{list of <keys>=<value>}

オプションのデフォルト値と内容を以下に示しました。
特定のオプションだけ見たい人は、青文字のリンクから解説をみることができます。
(この記事で紹介するオプションは全体のほんの一部です。続きは次回以降説明します)

原子または分子と結合線のスペース
atom sep = <3em>: 原子または分子を四角で囲いその中心同士を結んだ長さ
bond offset = <2pt>: 原子または分子と結合線のスペース
double bond sep = <2pt>: 複数の結合線の間のスペース
fixed length = <true>:記述する原子または分子の幅に寄らない固定の長さにする

クサビの形
cram rectangle = <false>: クサビを長方形にする
cram width = <1.5ex>: クサビの三角形の底辺の長さ
cram dash width = <1pt>: クサビの点線の幅
cram dash sep = <2pt>: クサビの点線と空白の幅

・結合角度
angle increment = <45>: 結合の角度を整数で表現するとき[1]にあたる角度を設定
bond join = <false>:単結合をキレイにつなげる

原子・結合線のスペース

atom sep・bond offset・double bond sep
以下にそれぞれが制御する場所を示しました。直感的に理解しやすいオプションですね。

\chemfig{Na-Cl}
\chemfig{O=O}

fixed length
chemfigの結合線は原子または分子を四角で囲ったときの中心同士を結んだものです。
例にNaClとHClを挙げます。[fixed length=false]の場合Hの方がNaよりも四角が短いので、その分結合線が長くなります。
[fixed length=true]の場合は結合線の長さにあまり差がないように見えます。これは中心ではなく四角の側辺同士をつなげたものを結合線としているからです。

\chemfig{Na-Cl} 
\chemfig{H-Cl}
\chemfig{Na-Cl} \chemfig[fixed length=true]{Na-Cl}
\chemfig{H-Cl} \chemfig[fixed length=true]{H-Cl}

クサビの形

cram rectangle・cram width・cram dash width・cram dash sep
についても以下にそれぞれが制御する場所を示しました。

結合角度

ここから少し難しくなります・・・・・

angle increment
結合の角度を設定できます。
結合の角度の指定は2種類ありますが、一番シンプルなのは整数で指定する方法です。 角度フィールドに整数が含まれている場合、これは結合が水平に対して行う角度を表します。デフォルト値の45の倍数であれば、[0]は0の角度、[1]は45、[2]は90、[3]は135・・・のように数字が1つ上がるごとに角度が45度上がります。
ためしにプロパンを2通りの書き方で描くと・・

%角度を手動で入力する方法
\chemfig{H -[:330]C  (<:[:240]H) (<[:300]H) -[:30]C (<[:60]H) (<:[:120]H) -[:330]C  (<:[:240]H) (<[:300]H)  -[:30]C (<[:60]H) (<:[:120]H) -[:330]H}
%[1]の角度を30度とし整数で指定する方法
\setchemfig{angle increment=30}
\chemfig{H -[11]C  (<:[8]H) (<[10]H) -[1]C (<[2]H) (<:[4]H) -[11]C  (<:[8]H) (<[10]H)  -[1]C (<[2]H) (<:[4]H) -[11]H}

          \centering     \setchemfig{angle increment=30}     \chemfig{H -[11]C  (<:[8]H) (<[10]H) -[1]C (<[2]H) (<:[4]H) -[11]C  (<:[8]H) (<[10]H)  -[1]C (<[2]H) (<:[4]H) -[11]H}

予め30度に設定した方が文章がスッキリしているように見えます。
結合角度が固定されている化合物に使えそうですね。

bond join
湿布材として用いられるサリチル酸をオプションありとなしバージョンで描いてみました。
何が違うかわかりますか?

\chemfig{*6(=-(-COOCH_3)=(-OH)-=-)}
\chemfig[bond join=true]{*6(=-(-COOCH_3)=(-OH)-=-)}

          \centering     \chemfig{*6(=-(-COOCH_3)=(-OH)-=-)}     \chemfig[bond join=true]{*6(=-(-COOCH_3)=(-OH)-=-)}

正解は単結合のつながり方です!(画像が荒くてわからないかもしれませんが・・)
[bond join=true]としたサリチル酸の方が単結合がキレイにつながっています。

何故かというと・・・
Chemfigはコードの中でボンドを見つけた直後にボンドを描画し、その結果、次から次へとボンドを描画します。そのため、原子が空のとき(炭素やヘテロ原子を省略するとき)パスがつながらず不連続の結合線ができてしまいます。[bond join=true]とするとコンパイル時間を少し増やしますが、この問題を解決できます(単結合を繋げることができます!)(コンパイル時間が長いのはストレスになるので、最後の仕上げにこのオプションを入れた方がよいでしょう。)

今回はここまで。次回も\chemfigについて学びます。
角度指定方法と環式炭化水素の描き方が主な内容です。引き続き、一緒に頑張りましょう!

参考にしたサイト様

公式ドキュメント
https://www.ctan.org/pkg/chemfig
bond joinオプションについて
https://tex.stackexchange.com/questions/161796/ugly-bond-joints-in-chemfig


-LaTeX
-, , ,

Copyright© latotex-blog , 2020 All Rights Reserved Powered by STINGER.