TeXでのアルゴリズム(擬似コードの記述) algorithms パッケージ

昨日のエントリーLaTeX環境の導入について紹介した。

今回は少しマイナーな話になってしまうが、LaTeXで次のようなアルゴリズムを表現する方法について紹介する。

「TeXインストーラー3」のような標準的なインストーラには、このようなアルゴリズムを美しく出力するためのパッケージが含まれていないことが一般的なので、後から必要なものを個別に追加することになる。

今回は、algorithms というパッケージを使用する。
これは次のページからダウンロードできる。

■CTAN directory: /macros/latex/contrib/algorithms
http://tug.ctan.org/tex-archive/macros/latex/contrib/algorithms/

上記Webページの上部にある「zip file」のリンクからファイルをダウンロードして解凍する。
その後、コマンドプロンプトで解凍後のフォルダに移動して次のように入力して

C:\somewhere\algorithms\>platex algorithms.ins

とする。
このようにしてできた algorithmic.sty と algorithms.sty ファイルを、TeXのパスの通った場所に配置する。
一番簡単なのは、.tex ファイルと同じ場所に置くこと。

あとは、.tex の中に次のように記述すればよい。

\usepackage{algorithm}
\usepackage{algorithmic}

これで問題無く使用できるといいのだが、私が使用した時には、algorithmic.sty でエラーが発生してしまったので、次の行をコメントアウトして対応した。

\newcommand{\AND}{\algorithmicand{} }

冒頭のアルゴリズム例はパッケージのマニュアルにあるもので、次のように記述されている。
詳しくは、ダウンロードしたファイルに含まれるマニュアル algorithms.pdf を参照すること。

\begin{algorithm}                      
\caption{Calculate $y = x^n$}         
\label{alg1}                          
\begin{algorithmic}                  
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\STATE $y \Leftarrow 1$
\IF{$n < 0$}
\STATE $X \Leftarrow 1 / x$
\STATE $N \Leftarrow -n$
\ELSE
\STATE $X \Leftarrow x$
\STATE $N \Leftarrow n$
\ENDIF
\WHILE{$N \neq 0$}
\IF{$N$ is even}
\STATE $X \Leftarrow X \times X$
\STATE $N \Leftarrow N / 2$
\ELSE[$N$ is odd]
\STATE $y \Leftarrow y \times X$
\STATE $N \Leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}
\end{algorithm}

以下、関連リンク
LaTeX/Algorithms and Pseudocode (WIKI BOOKS)
TeX入門/各種パッケージの利用 (TeX Wiki)
algorithmic.sty の説明

関連エントリ
論文での疑似コードの書き方



LaTeXの解説書としては、次の「LaTeX2ε美文書作成入門」が定番。一冊手元に置いておいて間違いはない。

[改訂第7版]LaTeX2ε美文書作成入門

[改訂第7版]LaTeX2ε美文書作成入門


C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)