VScode住人の探検記

Visual Studio Codeでなんでもこなすのがポリシー。LaTeX(2020/7/19~), C(2021/1/25~), C#(2/4~), HTML&CSS(2/14~), Python(2/16~), JavaScript(2/28~), jQuery(3/18~), Sass(Scss)(3/20~),シェルスクリプト(3/21~), jCanvas(5/21~), WordPress(5/23~), PHP(5/31~)

古いtexliveでchemfigを使うには【setchemfigとchargeの落とし穴】

chemfigは化学マクロの中では最も解説ブログが豊富だが、そこに書かれている通りにやろうとしても2017以前のtexliveユーザーは頓挫することがある。

texliveを最新版にアップデートすればそれらの問題は解決するが、アップデートがうまくいかず、当分は今のバージョンのtexliveを使い続けなければならない人向けの解決策を紹介する。

なお、2017年以前のtexliveといちいち書くのは面倒なので、以降、『2017年以前のtexlive』を『texlive~2017』と表記する。
同様に『2019年以前のtexlive』を『texlive~2019』と表記する。

問題1…texlive~2017搭載のchemfigでは\setchemfigは使えない

\setchemfigが使えるのは、2018/3/8に公開されたv1.3以降のchemfigらしい。
CTANのchemfigのページではアップデートの履歴を閲覧できるが、v1.3公開のお知らせに\setchemfig新登場の記載がある。

CTAN: CTAN-ann - CTAN Update: chemfig

texlive~2017には、当然のことながらそれ以前のバージョンのchemfigが搭載されているため、\setchemfigは使えない。その場合、以前存在した\setchemfigの代わりとなるコマンドを使用する必要がある。

atom sepの設定についての一例を示す。

%texlive2018以降搭載のchemfigでの表現
\setchemfig{atom sep=3em}
\chemfig[atom sep=3em]{}

%texlive~2017搭載のchemfigでの表現
\setatomsep{3em}

問題2…texlive~2019搭載のchemfigでは\chargeは使えない

CTANから入手できる最新のマニュアル(パッケージドキュメント)

https://ftp.kddilabs.jp/CTAN/macros/generic/chemfig/chemfig-en.pdf

には、『v1.5以降、\Lewisコマンドや\lewisコマンドが\chargeコマンドに置き換わりました』という趣旨の記述がある。
v1.5の公開が20203/5なので、それ以前のchemfigが搭載されているtexlive~2019では旧バージョンのコマンドである\lewisを使うしかない。

\lewisの使い方を知るには旧バージョンのchemfigのマニュアルを参照する必要があるが、現在CTANで閲覧できるのは最新バージョンのマニュアルのみだ。
windows10にLaTeX2e美文書作成入門改訂第7版のDVD-ROMでtexliveをインストールした場合のchemfigマニュアルの在り処を参考までに載せておく。

f:id:nix_campane:20201122190003j:plain

  1. TeX Live command-lineを開いて『kpsewhich chemfig.tex』と入力し、enter
  2. 返ってきた答えがc:/texlive/2017/texmf-dist/tex/generic/chemfig/chemfig.texなら、c:/texlive/2017/texmf-dist/doc/generic/chemfigにマニュアルchemfig-en.pdfが存在する

問題3…texlive~2017ではv1.54以降のchemfigは動作しない

以上のように、ブログなどの情報を頼りに古いchemfigを使うのには様々な問題が伴う。
ならば、
CTANから最新のchemfigをインストールすればいいのでは?
…という考えに至るのも自然なことだが、実はそれもうまくいかない。

その理由は、CTANから入手できる最新のマニュアル(パッケージドキュメント)の1.1節に記載されている。
難しい話はよくわからないが平たくいえば、『v1.54以降のchemfigは古いtexlive等では動作しませんよ』と書かれてあるのだ。

古いバージョンのchemfigを入手するのもおそらく不可能なので、texlive自体の更新が困難ならば、やはりchemfigの旧ルールに従い続けるしかない。

数学・物理・化学のノートづくりに役立つLaTeXマクロ一覧

CTANにある数多のマクロ達。それらを隅々まで把握している者はおそらく存在しないだろう。知れば知るほどLaTeXの無限の可能性を実感できるのに、誰もが使う一部のマクロしか知られていないのはもったいない…
『こんなものをつくりたい!』と思ったときにどんなマクロを使えば効率が良いのか、迷える未来の自分と誰かのためにメモしておく。
随時更新。マクロの説明は超主観的なので、気になったものはぜひ検索してマニュアルを開いてみてほしい。

witharrows
…式変形に補足説明を加える

bchart
…棒グラフをかく

tikznetwork
グラフ理論の図解、様々な模様を描いた平面を描画、2平面間に矢印を描画
複素関数や多変数関数、線形代数などの図解に使えそう)

tkz-linknodes
…樹形図、式変形に補足説明を加える

tkz-euclide
…平面幾何、コンパス跡、分度器

tkz-graph
グラフ理論

tkz-berge
…樹形図、項などを表す球(力学ノートで質点として使えそう、特に多質点系の力学で大活躍しそう)

thmtools
…定理を記述する環境を整えてくれる

rulercompass
…コンパスによる作図跡

pas-cours
…メタリック調のテカテカした枠組み、テカテカした立体、立体幾何、展開図、漸化式の図示

luamesh
…平面幾何、グラフ理論

drawmatrix
…行列の中身を表す箱

venndiagram
…ベン図

rank 2 roots
群論の図

nicematrix
…行列中に列や行を区切る線引き、表、行列の成分を色分け、行列の横や上下に行や列の名前を表すメモ書き、一般の大きさの行列、行列の横や上に行や列の本数を表すメモ書き、掃出法の変形の補足説明、行列間の関係を表す矢印

karnaugh-map
カルノー

scratch3
…一行メモをパズルのように羅列

tikzorbital
分子軌道法ダイアグラム、混成軌道のイメージ図

modiagram
分子軌道法ダイアグラム

bohr
…ボーア模型風電子配置図

pgf-spectra
…光のスペクトル

pst-sigsys
…様々な物理の図を描く

pst-optic
…レンズの図ならなんでもかける

tikz-optics
…光の実験の装置図、物体の長さを表す矢印

pst-magneticfield
…磁場を描く

chemschemex
…反応機構を組み立てる矢印(生化学などの円形反応機構にも対応)

tikz-planets
…惑星

circuitikz
…回路図

tikz-qtree
…樹形図

forest
…樹形図(tikz-qtreeよりバリエーション豊富)

istgame
…樹形図、グラフ理論

mptrees
…樹形図

fast-diagram
…樹形図、家系図、分類表

ribbonproofs
…証明の流れや他の定理との関係を表す表

tikz-dependency
…単語と単語の間を矢印で結んで関係を表す(数列の項どうしの関係をメモするのに役立ちそう)

smartdiagram
…円形の関係図(生化学反応の概要を表すのに役立ちそう)
…横並びの関係図(作業の手順をメモするのに役立ちそう)
…縦並びの関係図
言葉で表せないが、ノート制作において本当にいろいろ使えそう

bodewgraph
…対数グラフ

tikz-3dplot
…3次元座標、3次元グラフ

pgfplots
…あらゆるグラフを描画(多変数関数の微分積分学統計学などのノートづくりに必須)

bclogo
…可愛い枠

tikiz-page
…ページ端に装飾を施す(便箋とか作れそう)

callouts
…画像にメモを書き込む

matrix.skeleton's
…行列などを表す色分けされた表

tikzmark
…文章中に矢印メモを書き加える

DPcircling
…文章中の一部分を特殊な枠で囲んで強調する

xypic
圏論、編み物の編み図

commutative diagram
圏論

xlop
…筆算

underoverlap
…数式の上下に括弧で注釈、数式の一部を箱で囲んで注釈

onbraces
…数式の上下に括弧で注釈

tkz-tab
微分でグラフをかくときの増減表、数列の増減を表す表

tabvar
…増減表

systeme
連立方程式の記述

statistics
…グラデーション表(pH表とかに使えそう)、統計学のグラフ

spalign
…行列やベクトルの記述

short math
…複雑な数式の記述

shapes
…分数を表す円

schulmathematik
…複雑な数式、座標平面、化学定数、回路図、同位体、問題集のような空欄、計算問題集のように数式を並べる、列ベクトルを簡単に出力

rec-thy
…抽象数学で使う様々な記号

pst-vehicle
…円の幾何学(2円の関係、曲率)、坂を走る車や自転車

pst-poly
…多角形

pst-platon
…多面体

pst-ode
…3次元グラフ

pst-math
…2次元グラフ

pst-geometrictools
…三角定規、分度器、コンパス、定規などのイラスト

pst-func
…グラフと棒グラフの融合

pst-eucl
…平面幾何

polynomial
多項式を超絶簡単にかく

polynom
多項式の割り算の筆算、組立除法、因数分解した式を計算して出してくれる

longdivision
…数の割り算の筆算

phfthm
…定理を記述する環境を整えてくれる

perfectcut
…様々な括弧を出力(多重になったときの大きさ調整も可能)

musikui
…数字の代わりに四角を用いて筆算の手順を説明

mfpic4ode
…ベクトル場を図示

mathtools
…シグマやlimの下に数式、複数行に渡る数式を見やすく配置、連立方程式のような形式で答えを場合分けして表示

mathfont
…あらゆる数学記号を出力、手書きボールド体アルファベットの出力

mathexam
…数学試験問題プリントの作成を補助

mathdots
…記号の上にドット(微分の表示など)

mathalpha
…数学で用いる様々なフォントのアルファベット

letterswitharrows
…記号の上に矢印(ベクトルの表示)

jkmath
整数論や組合せ論の記号、ボールド体アルファベットを簡単に出力

hf-tikz
…数式を色付き枠で囲む

halloweenmath
…数式を超絶可愛く飾る

gn-logic
…論理式

gauss
…掃出し法の手順注釈

derivative
微分記号を簡単に出力

diffcoeff
微分記号を簡単に出力(特に熱力学で使う固定変数を明示した偏微分記号)

content
…あらゆる関数を簡単に出力、微分積分記号を簡単に出力、単位行列を簡単に出力、複素平面の記号を簡単に出力、組合せ論の記号を簡単に出力、整数論の記号を簡単に出力、テンソル、etc.
とにかく万能だから物理や数学のノートづくりには必須

commath
…様々な括弧つきの文字、微分記号、ノルムなどを簡単に出力

bropd
…括弧つきの文字、微分記号を簡単に出力

braket
…括弧つきの文字を簡単に出力

bigints
…ベクトルの積分記号を出力

autoaligne
…項を縦に揃えて数式をかく(式変形が分かりやすくて便利)

susy
…物理でよく使う文字を簡単に出力

physics
…あらゆる物理記号を簡単に出力
物理のノートづくりには必須

mandi
…様々な単位、ベクトル解析の定理式、熱力学の式、マクスウェル方程式を簡単に出力
物理のノートづくりには必須

simplewick
…同類項などを結ぶ線

chemfigで色つき構造式を描く【LaTeXで化学ノートをつくりたい】

xymtexで色つき構造式を描くのは比較的簡単だが、chemfigで色つき構造式を描こうとすると様々な困難が立ち塞がる。

しかし、xymtexは環式化合物の描画に特化しているため、鎖式化合物の色つき構造式を描くにはどうしてもchemfigを使わなくてはならない。

chemfigマニュアル(英語)にもほとんど明記されておらず、解説ブログも現時点では存在しないchemfig構造式のカラー化手法…
そんな道無き道だが、試行錯誤の末に方法を確立した(気がする)ので、ここに記しておく。

構造式全体に色をつける

これは簡単である。

\textcolor{色名}{\chemfig{構造式を出力する文字列}}

とすればよい。

結合線に色をつける

chemfigで結合線を描くには、\chemfig{}内で

  • 単結合なら -[結合線の情報]

  • 二重結合なら =[結合線の情報]
  • 三重結合なら ~[結合線の情報]

という書式で入力することになり、結合線の情報の中身は

[角度,長さの倍率,結合元原子の番号,結合先原子の番号,TikZのオプション]

のように記述する。
具体的な書き方については、私自身も大変お世話になったブログ↓
chemfigパッケージによる構造式描画 - TeX Alchemist Online
を参照していただくとして、とりあえず結合線に色をつけるにはtikzのオプションの部分を色名に変更すればよい。

離れている原子にそれぞれ色をつける

これも直感が通用し、\chemfig{}内で

\textcolor{色名}{原子}

とすればうまくいく。

主鎖の一部や置換基に色をつける(ここからが本題)

ここが厄介なところで、単純に\textcolor{色名}{基を出力する文字列}としてしまうと次のような問題が発生する。

基が主鎖の一部分の場合
…色をつけた基が主鎖の他の部分に重なる

基が主鎖に直接結合している置換基の場合
…結合線の位置が色をつけた基の中央になってしまい、CとCとの結合に見えない

f:id:nix_campane:20200905015315p:plain

試行錯誤の結果、これらの問題を回避するには次のように記述すればよいことがわかった。
鎖の骨格となる原子そこにくっついている諸々を分けて、別々に色づけしてあげるというニュアンスである。

枝分かれとなるメチル基-CH3に色をつける場合

-[,,,,色名]\textcolor{色名}{C}|{\color{色名}H_3}

プロパンCH3-CH2-CH3のCH2部分に色をつけたい場合

枝分かれがない鎖状化合物の一部分に色をつけるなら、chemfigを使わずにchemformulaパッケージの\chコマンドで全体を描画するほうが早い。
\chコマンドではchemfigのような厄介な問題は起こらないからだ。

プリアンブル↓
\usepackage{chemformula}

begin{document}以降↓
\ch{CH3-\textcolor{色名}{CH2}-CH3}

イソブタンの主鎖の一部に色をつける場合

枝分かれがある化合物はchemfigで描くしかないので、上記のメチル基の場合と同じように、骨格をつくるCは独立で色付けしなければならない。

プロパノールのOH基に色をつける場合

Oは骨格をつくる原子とみなし、これまでに挙げた例のCと同じ扱いをする。

鬼畜な例

以上の教訓を胸に、次のような鬼畜な構造式を描画してみよう。

f:id:nix_campane:20200905015220p:plain

水色とピンクはお気に入りの色味に設定。
(このRGB値はアナログ時代愛用していたプレイカラーというペンの桃色、水色をスポイトでデータ化したもの)

\definecolor{plmomo}{RGB}{248,22,147}
\definecolor{plmizu}{RGB}{2,181,238}

また、\textcolor{plmomo}{}や\textcolor{plmizu}{}といちいち書いていると鬼畜な長さのコードになってしまい、エラーが起きたときに原因を見つけ出しづらくなってしまうため、

\newcommand{\mm}[1]{\textcolor{plmomo}{#1}}
\newcommand{\mz}[1]{\textcolor{plmizu}{#1}}

のようなコマンドを定義して、\mm{}または\mz{}と書けば済むように工夫しよう。
つまり、ここから先は、

  • \textcolor{plmomo}{}を\mm{}で表す
  • \textcolor{plmizu}{}を\mz{}で表す

するとコードは…

\chemfig{\mm{C}|{\color{plmomo}H_3}\mm{C}|{\color{plmomo}H}=[,,,,plmomo]\mm{C}|{\color{plmomo}H}-[,,,,plmomo]\mm{C}|{\color{plmomo}H}(-[2,,,,plmizu]\mz{C}|{\color{plmizu}H_2}-[,,,,plmizu]\mz{C}|{\color{plmizu}H}=[,,,,plmizu]\mz{C}|{\color{plmizu}H_2})-[,,,,plmomo]\mm{C}|{\color{plmomo}H_2}\mm{C}|{\color{plmomo}H_2}\mm{C}|{\color{plmomo}H}=[,,,,plmomo]\mm{C}|{\color{plmomo}H_2}}

…こうなる。エグい

\chemfig{}内の各部分が何を表すのか分解してみると、

%主鎖のCH3(左端)
\mm{C}|{\color{plmomo}H_3}

%主鎖のCH
\mm{C}|{\color{plmomo}H}

%主鎖の=
=[,,,,plmomo]

%主鎖のCH
\mm{C}|{\color{plmomo}H}

%主鎖のー
-[,,,,plmomo]

%主鎖のCH
\mm{C}|{\color{plmomo}H}

%枝分かれ
(
 -[2,,,,plmizu]\mz{C}|{\color{plmizu}H_2}%ーCH2
 -[,,,,plmizu]\mz{C}|{\color{plmizu}H}%ーCH
 =[,,,,plmizu]\mz{C}|{\color{plmizu}H_2}%=CH2
)

%主鎖のー
-[,,,,plmomo]

%主鎖のCH2
\mm{C}|{\color{plmomo}H_2}

%主鎖のCH2
\mm{C}|{\color{plmomo}H_2}

%主鎖のCH
\mm{C}|{\color{plmomo}H}

%主鎖の=
=[,,,,plmomo]

%主鎖のCH2(右端)
\mm{C}|{\color{plmomo}H_2}

…本当に大変だが、アナログで色ペンを何度も持ち替えながら書くよりはよっぽど楽である。

LaTeXで色付きニューマン投影式を描く【LaTeXのnewcommand】

\usepackage{chemmacros}と入力するとbegin{document}に対してundefined control sequenceエラーが出るという謎の現象が発生しており、2日間いろいろな策を試みたものの一向に解決の兆しが見えないため、いよいよ最終手段に出ることにした。

その最終手段とは…結局chemmacrosの使用は諦め、
『他のパッケージで代用できない機能は自分で作る』

というわけで、まずはchemmacros独自の機能であるニューマン投影式の描画コマンドの代わりとなるものを自作しよう。
chemmacrosのプログラムはexpl3とxparseによって記述されている。しかし、expl3はまったく分からない上、それ自体がエラーの原因になっている可能性も否定できないため、ここは無難にtikzとLaTeXのnewcommand機能を用いて作成することとする。

そして完成品がこちら。

  • ねじり型ニューマン投影式…\nejinewm
  • なり型ニューマン投影式…\kasanewm
  • 色分けバージョン…語尾にcl
\nejinewm{H}{CH}{F}{Cl}{N}{O}%下図の左から1番目を出力する
\nejinewmcl{H}{CH}{F}{Cl}{N}{O}%下図の左から2番目を出力する
\kasanewm{H}{CH}{F}{Cl}{N}{O}%下図の右から2番目を出力する
\kasanewmcl{H}{CH}{F}{Cl}{N}{O}%下図の右から1番目を出力する

…と入力すると、下図が簡単に描ける。{ }内は分かりやすいようにすべて違う原子団にしている。もちろん{ }内に好きな原子団を放り込めばよい。
f:id:nix_campane:20200829011832p:plain

ソースコードはこちら。
プリアンブルに記述するには長すぎるので、コピペして適当な名前のstyファイルとして保存し、usepackageで呼び出して使うのがオススメ。

%アルファベットや数式をちょっと可愛くするフォントパッケージ(お好みで。使わなくてもよし)
\usepackage[math]{anttor}
%必須
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}

%手前の炭素につく基の色の定義(RGB以降は好きな色に書き換えてもよし)
\definecolor{plmomo}{RGB}{248,22,147}
%後ろの炭素とその基の色(RGB以降は好きな色に書き換えてもよし)
\definecolor{plmizu}{RGB}{2,181,238}

%ねじり型ニューマン投影式描画コマンドnejinewm
\newcommand{\nejinewm}[6]{
\begin{tikzpicture}
  \coordinate (C) at (0,0) ;
  \foreach \angle in {90,210,330}
   {
     \draw (C) -- ++(\angle:1.5) coordinate (C-\angle) ;
   }
  \draw
    (C) circle (.75);
  \foreach \angle in {30,150,270}
    {
      \draw (C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ;
    }
  \foreach \angle in {30}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; }
  \foreach \angle in {90}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; }
  \foreach \angle in {150}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; }
  \foreach \angle in {210}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; }
  \foreach \angle in {270}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; }
  \foreach \angle in {330}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; }
\end{tikzpicture}
}

%色付きのねじり型ニューマン投影式描画コマンドnejinewmcl
\newcommand{\nejinewmcl}[6]{
\begin{tikzpicture}
  \coordinate (C) at (0,0) ;/
  \foreach \angle in {90,210,330}
   {
     \draw[very thick,plmomo](C) -- ++(\angle:1.5) coordinate (C-\angle) ;
   }
  \draw[plmizu](C) circle (.75);
  \foreach \angle in {30,150,270}
    {
      \draw[very thick,plmizu](C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ;
    }
  \foreach \angle in {30}
    { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; }
  \foreach \angle in {90}
    { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; }
  \foreach \angle in {150}
    { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; }
  \foreach \angle in {210}
    { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; }
  \foreach \angle in {270}
    { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; }
  \foreach \angle in {330}
    { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; }
\end{tikzpicture}
}

%重なり型ニューマン投影式描画コマンドkasanewm
\newcommand{\kasanewm}[6]{
\begin{tikzpicture}
  \coordinate (C) at (0,0) ;
  \foreach \angle in {90,210,330}
   {
     \draw (C) -- ++(\angle:1.5) coordinate (C-\angle) ;
   }
  \draw
    (C) circle (.75);
  \foreach \angle in {75,195,315}
    {
      \draw (C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ;
    }
  \foreach \angle in {75}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; }
  \foreach \angle in {90}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; }
  \foreach \angle in {195}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; }
  \foreach \angle in {210}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; }
  \foreach \angle in {315}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; }
  \foreach \angle in {330}
    { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; }
\end{tikzpicture}
}


%色付きの重なり型ニューマン投影式描画コマンドkasanewmcl
\newcommand{\kasanewmcl}[6]{
\begin{tikzpicture}
  \coordinate (C) at (0,0) ;/
  \foreach \angle in {90,210,330}
   {
     \draw[very thick,plmomo](C) -- ++(\angle:1.5) coordinate (C-\angle) ;
   }
  \draw[plmizu](C) circle (.75);
  \foreach \angle in {75,195,315}
    {
      \draw[very thick,plmizu](C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ;
    }
  \foreach \angle in {75}
    { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; }
  \foreach \angle in {90}
    { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; }
  \foreach \angle in {195}
    { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; }
  \foreach \angle in {210}
    { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; }
  \foreach \angle in {315}
    { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; }
  \foreach \angle in {330}
    { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; }
\end{tikzpicture}
}

…白状しよう。
実はゼロから自分で作ったわけではない。(そもそもtikzの使用自体が今回が初体験なので何一つわからなかった)下記リンクにあるコードをベースにいろいろいじったのである。

Newman-Projektion mit chemmacros - TeXwelt

CTANから入手可能な化学パッケージの特色一覧【TeXで化学ノートを作りたい】

化学界でのTeX普及率は低く、TeXで化学文書を作ろうにも情報が少ない。
日本語の解説が無いのなら、自らの手で英語の解説を翻訳するのみである。

というわけで、まずは下記のページのリストに載っている化学パッケージのpackage documentationを読み漁ってみた。

CTAN: Chemistry

未来の自分自身、もしくはTeXで化学を表現したいという野望を抱く同士達の道標とするために、そこから読み取れた各パッケージの特色をざっくりまとめておく。

chemformula【高校化学ならこれで十分】
イオン式
組成式
・化学反応式(触媒を矢印の上に表示可能)
・電子式
・化学反応式を電子式で(電子配置を下に添えることも可能)

mhchem
イオン式
組成式
・化学反応式
・水素結合

chemfig【自由度MAXの構造式描画】
・やや面倒だがどんな構造式も書こうと思えばかける(価標を一本ずつ描くイメージ、結合角も指定可能)
・巻矢印
・電子式
・錯体の構造式

xymtex【大学有機化学の教科書をまるごと組版できそうな万能っぷり、IUPAC命名法の知識が身につく】
有機化合物の構造式ならほぼなんでも描ける
IUPAC名によく似たコマンド名
・イス型構造
・架橋
・縮合環(炭素に番号をつけてくれる機能つき)
・構造式の一部や原子に色をつけられる
・反応式の重要な箇所を色四角で囲める
・ハワース式
・ニューマン式
・錯体
・正四面体構造が一目で分かる図
・一つの化合物を違う視点から見た構造式が描ける
・高分子化合物
・各原子の所有電子→電子の共有→結合の形成という流れが分かる構造式
・電子式
・複数の環にABCD…という文字を入れて区別
ベンゼン環の様々な限界構造
・ヘリセン
・巻矢印を用いた反応機構や共鳴構造
・2本の半反応式を辺辺加えて反応式をつくる
・紙を積み重ねたようなオシャレな枠囲み

bpchem
・cis、transが自動でイタリック体になるコマンド
・ハプト数の記号が簡単に出力できるコマンド

chemmacros【物理化学にも配慮】
・酸解離定数などの記号
・丸囲み電荷
・δ電荷
IUPAC名の書体を自動で整えてくれるコマンド
・イタリックにすべき文字(指示水素etc.)を自動でイタリックにしてくれるコマンド
・RS表記の回転方向の矢印
・ハプト数の表示
・フィッチャー式のDLを自動で小さく表示してくれるコマンド
・熱化学方程式
理想気体の記号
同位体
・高分子化合物
・ニューマン投影式
・オービタル
・化学反応式
・酸化還元の矢印表示
・NMR
・エンタルピー

bohr
・ボーア模型による電子配置の図

carbohydrates
・(形にこだわらなければ)糖の構造式を簡単にかける

chemexec
・よく使うイオンを一発で出力
・丸囲みの+,-(形式電荷
・電子や陽子記号
・RS表記の回転方向の矢印

chemscheme
・e.g.やi.e.やetc.などをイタリックで表示してくれるコマンド

chemschemex
・円形(有機金属化学反応、生化学反応によくある、同じ反応をぐるぐる繰り返すタイプ)の反応式を描ける

chemstruct
ベンゼン環の限界構造式(ただしちょっと歪)
・金属錯体の構造式
・生体高分子化合物

elements
・電子配置の横書き表記(1s^2 2s^2…)を簡単に出力できる

endiagram
・化学反応のエネルギー変化のグラフ

ghsystem
・毒性・引火性などの警告マーク

lewis
・電子式を簡単に出力できる

mcf2graph
・手描きで描くときと同じ感覚で構造式を描ける(主観)
・usepackageしてすぐに使えるコマンド形式の命令ではないため、使える状態に至るまでの環境構築が結構大変

modiagram
分子軌道法ダイアグラム

mol2chemfig
・炭素に番号をつけた有機化合物構造式
・巻矢印

mychemistry【反応機構に特化】
・一つの化合物から多数の化合物ができる反応式
・構造式の大きさを簡単に変更
・色線で構造式を描く
・構造式や反応式を色つき四角で囲む
・巻矢印
・共鳴構造
・生化学反応
・光化学反応
・縦書きの反応式
カップリング反応

pst-labo
・化学実験の図(しかもカラーでめちゃくちゃ可愛い)

streetex
有機化合物のスペクトル
・炭素を・で表した構造式

texshade
・ゲノム

tikzorbital
分子軌道法ダイアグラム
・電子軌道や混成軌道の図

酸化数の規則に納得する

化合物中の原子の酸化数の合計が0になるというのは、エネルギー保存則ならぬ電荷保存則といえる。

誰かが手放した分は必ず誰かが貰っていないといけない。

たとえば合計が+1になってしまえば、化合物全体の所有電子が結合前より1個少ないということであるため、結合時に1個の電子がどこか宇宙の彼方へ飛んで行ってしまったことになる。
無論、こんなことは有り得ないので、電荷保存則は必ず満たすべき最優先規則。

Hを+1、Oを-2とする原則の下では、過酸化水素は酸化数の合計が-2になってしまう。
電荷保存則を満たすようにするには、Hを+2にするか、Oを-1にするかの修正が必要になる。
だが、Hは1個の電子しか所有していないため、2個の電子を失ったことを表す『酸化数+2』はありえない。
そこで、Oを-1にする。

  • - - - - - - - - - - - - - - - - ✄

保存則という考え方がこんなところで役立つとはな…
やはり自然科学を探索する者は物理学を学ばなければ始まらない。これからも頑張ります