つれづれなる備忘録

日々の発見をあるがままに綴る

Texによる文書作成18 ~mhchemパッケージ

以前、MathJaxをロードすることでmhchemを利用して化学反応などを表記できることを紹介したが、今回はCloud LaTeXでmhchemをパッケージとしてロードして使用する方法について紹介する。

atatat.hatenablog.com

atatat.hatenablog.com

1. mhchemのロード

 mhchemとは化学式、化学反応式をTeXで記述するためのマクロパッケージである。ただし、商用のchemdrawのようにベンゼン環などを記述することはできない。Cloud LaTeXではプリアンブル領域に\usepackage[version=4]{mhchem}とすることで最新バージョン(2018現在)のmhchemをロードすることができる。なおversion 3とversion 4で挙動が異なるので、version 3でコンパイルできていたものがversion 4でエラーになるようであればversion=3として回避する方法もある。

\usepackage[version=4]{mhchem}

document中に\ce{}として{ }内に化学式を記述する。例えば、\ce{H2O}とすると2は自動的に下付きに変換される。半角スペース空けると通常サイズの数字になる。 反応方向の矢印は->とすると矢印は描画される。反応が複数行に渡る場合はalign環境\begin{align*}~\end{align*}内に\ce{~}と記述する。以下mhchemのTeXコード例と実行例を示す。

\section{mhchemへようこそ}

水分子:\ce{H2O}

化学反応:\ce{CO2 + C -> 2 CO}

イオン:\ce{CrO4^2-}, \ce{H+}, \ce{[AgCl2]-}

酸化数:\ce{Fe^{II}Fe^{III}2O4}

化学方程式:\ce{1/2H2O}

同位体:\ce{^{227}_{90}Th+}

孤立電子・ラジカル:\ce{OCO^{.-}}

ギリシャ文字:\ce{\mu-Cl}

結合:\ce{A\bond{-}B\bond{=}C\bond{#}D}

反応:\ce{A -> B},\ce{A <--> B},\ce{A <<=> B},\ce{A ->[H2O] B}

沈降:\ce{SO4^2- + Ba^2+ -> BaSO4 v}

複数反応:
\begin{align*}
\ce{RNO2 &<=>[+e] RNO2^{-.} \\
RNO2^{-.} &<=>[+e] RNO2^2-}
\end{align*}

"mhchem実行例"
mhchem実行例

2. ベンゼン

pict2eというパッケージを利用して、ベンゼン環の描画をマクロで定義する方法がある。(以下参照)

doratex.hatenablog.jp

以下をプリアンブル領域に記述する。

\usepackage[dvipdfmx]{pict2e}

% 横向きベンゼン \benzene
\def\benzene{{\unitlength.1pt%
\raisebox{-7pt}{\begin{picture}(223,195)%
\linethickness{.5pt}%
\font\tenln=linew10%
\put(0,96){\line(10,17){56}}%
\put(54,191){\line(1,0){114}}%
\put(166,191){\line(10,-17){56}}%
\put(0,98){\line(10,-17){56}}%
\put(54,5){\line(1,0){114}}%
\put(166,5){\line(10,17){56}}%
\put(23,98){\line(10,17){45}}%
\put(155,173){\line(10,-17){45}}%
\put(66,22){\line(1,0){90}}%
\end{picture}}}}

% 横向きフェニル基 \phenyl
\def\phenyl{{\unitlength.1pt%
\raisebox{-7pt}{\begin{picture}(301,195)%
\linethickness{.5pt}%
\font\tenln=linew10%
\put(0,96){\line(10,17){56}}%
\put(54,191){\line(1,0){114}}%
\put(166,191){\line(10,-17){56}}%
\put(0,98){\line(10,-17){56}}%
\put(54,5){\line(1,0){114}}%
\put(166,5){\line(10,17){56}}%
\put(23,98){\line(10,17){45}}%
\put(155,173){\line(10,-17){45}}%
\put(66,22){\line(1,0){90}}%
\put(220,98){\line(1,0){80}}%
\end{picture}}}}

% 横向きベンゼンパラ二置換体 \para
\def\para{{\unitlength.1pt%
\raisebox{-7pt}{\begin{picture}(378,195)%
\linethickness{.5pt}%
\font\tenln=linew10%
\put(77,96){\line(100,173){57}}%
\put(132,192){\line(1,0){113}}%
\put(243,192){\line(100,-173){56}}%
\put(77,98){\line(10,-17){57}}%
\put(132,3){\line(1,0){113}}%
\put(243,3){\line(100,173){56}}%
\put(100,98){\line(100,173){45}}%
\put(232,173){\line(100,-173){45}}%
\put(143,22){\line(1,0){90}}%
\put(297,98){\line(1,0){80}}%
\put(0,98){\line(1,0){80}}%
\end{picture}}}}

本文に例えば以下のTeXコードを記述すると実行例のようにベンゼン環を含む化学式が表示できる。

\section{ベンゼン環}

\ce{{\benzene} + HNO3 ->{\phenyl} NO2 + H2O}

\begin{align*}
\ce{&{\phenyl}COOH + NaOH -> {\phenyl}COONa + H2O  \\
&{\phenyl}COONa + HCl -> {\phenyl}COOH + NaCl } 
\end{align*}

ベンゼン環含む化学式

3. まとめ

 今回はmhchemをCloud Latex上でパッケージとして読み込んで使用する方法について紹介した。さらにpict2eとmhchemを用いてベンゼン環を表記する方法についても紹介した。