LaTeX で Gaussian の入力ファイルをシンタックスハイライト
- LaTeX で執筆している某書籍中で Gaussian の入力ファイルを説明するときに、シンタックスハイライト(構文の各部を色分けして表示)したい
- プログラミングコードを組版する LaTeX 拡張の listings パッケージをカスタマイズするとできた
方法
Gaussian 入力ファイル用の listings 設定
listings
は Overleaf にはインストール済みのなので、usepackage
すれば使えるlistings
は、もちろんだけど、Gaussian だけじゃなくて、どの量子化学計算アプリにも対応していないlistings
はパラメータをカスタマイズできるので、Gaussian 用にキーワードの定義&スタイルの設定をしてみた
%%% Gaussian の入力ファイルを TeX で扱うための設定
\usepackage{listings}
% listings: キャプション名を変更
\renewcommand{\lstlistingname}{Input}
% listings: Gaussian 用のキーワード定義
\lstdefinelanguage{Gaussian}{
morecomment=[l]{\%}, % %で始まる行は設定行
morekeywords=[1]{b3lyp, hf, mp2, ccsd, rb3lyp}, % 計算手法に関連するキーワード
morekeywords=[2]{opt, freq, sp, td, irc}, % 計算内容を指定するキーワード
morekeywords=[3]{nosymm, scrf, empiricaldispersion}, % オプションに関連するキーワード
morestring=[b]", % ダブルクォーテーションで囲まれた部分を文字列として認識
sensitive=false, % キーワードの大文字小文字を区別しない
}
% listings: ハイライトのスタイル
\lstset{
language=Gaussian, % 使用する言語として Gaussian を指定
backgroundcolor=\color[gray]{0.95}, % 背景色
basicstyle=\ttfamily\small\color{black}, % 基本テキストスタイル
commentstyle=\color{teal}, % %で始まる行のスタイル
keywordstyle=[1]\color{cyan}\bfseries, % 計算手法のスタイル
keywordstyle=[2]\color{orange}\bfseries, % 計算内容のスタイル
keywordstyle=[3]\color{purple}\bfseries, % オプションのスタイル
stringstyle=\color{red}, % 文字列
showstringspaces=false, % 文字列内のスペース表示を無効化
numbers=left, % 行番号を左側に表示
numberstyle=\tiny\color{gray}, % 行番号のスタイル
stepnumber=1, % 1行ごとに行番号を表示
numbersep=10pt, % 行番号とテキストの間隔
breaklines=true, % 長い行は自動的に改行
frame=tb, % 枠線の位置(上下に)
rulecolor=\color{lightgray}, % 枠線の色
framexleftmargin=5pt, % 枠の左余白を設定
captionpos=b, % キャプションの位置
aboveskip=15pt, % このブロックの上余白
belowskip=10pt, % このブロックの下余白
}
使い方
- 上記を LaTeX の原稿コードにそのままコピペでも良いけれど、
gaussian.sty
として保存すれば、\usepackage{gaussian}
として読み込んでも使える
\documentclass{article}
\usepackage{xcolor}
\usepackage{gaussian}
\begin{document}
\begin{lstlisting}[caption={Methane}]
%Chk=opt.chk
%Mem=6GB
%NProcShared=4
#P B3LYP/6-31G(d) Opt EmpiricalDispersion=GD3BJ NoSymm
Molecule specification
0 1
C 0.000000 0.000000 0.000000
H 0.000000 0.000000 1.089000
H 1.026719 0.000000 -0.363000
H -0.513360 -0.889165 -0.363000
H -0.513360 0.889165 -0.363000
\end{lstlisting}
\end{document}
結果
カスタマイズ前
カスタマイズ後
考察
- 基底関数(
6-31G(d)
)は、数字などなどが含まれていて、キーワードとして定義するのが面倒そうだったのであきらめた - キーワードの定義は、まあ、説明に必要になったものを適宜に追加すれば良いよね
結論
- LaTeX で Gaussian の入力ファイルをシンタックスハイライトできた
- 同様に、GAMESS の入力ファイル用の定義も作ろうかな(作らなければ)と思っている