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の旧ルールに従い続けるしかない。