LaTeXで作成する論文にalgrotithmicパッケージを使った擬似コードを追加する.
環境
- pLaTeX2e <2020-10-01>+2
- 検証済み環境
- Cloud LaTeX
- Overleaf
擬似コード用パッケージ郡
擬似コードを実現する代表的なLaTeXパッケージは以下である.今回は,表現できる形式(例: 関数)が豊富な algorithmicx を説明する.algorithmicだけでは,表現できる形式が少ないため拡張されたalgorithmicxの使用を推奨する.
パッケージ毎に対応した記法は,以下のURLにまとめられている.大きな違いの1つに関数の記述がある.algorithmicやprogramだけでは関数を表現できない.algorithm2eでは,関数の入力が Data:
,出力がResult:
で表される.algorithmicxは,関数をFunctionとして記述できる.
LaTeX/Algorithms - Wikibooks, open books for an open world
用語の整理
似た単語が多く区別しにくいため以下に単語を整理した.
-
algorithms
- algorithmとalgorithmicの2つを含むパッケージ
-
algorithm
- 親パッケージ
- ラップする役割をもつ.
-
algorithmic
- 子パッケージ
- algorithmでalgorithmicをラップして使う.
- 今回は使わない.
-
algorithmicx
- 子パッケージ
- algorithmicを拡張したパッケージ
- algorithmでalgorithmicxをラップして使う.
- いくつかの役割ごとに分けられたファイル郡で構成されている.
手順
以降では,algorithmicxを使い,以下の擬似コードをLaTeXに埋め込む手順を説明する.
基本的な手順は,以下のドキュメントに書いてある.
(1) algorithmsをダウンロード
algorithmsには,スタイルファイル algorithm と algorithmic が含まれている.
これを使うことで,埋め込んだ擬似コードにスタイルが適用される.
以下のページにあるからZipファイルをダウンロードする.
(2) algorithmicxをダウンロード
以下のページにあるからZipファイルをダウンロードする.
(3) algorithmsとalgorithmicxを配置
ダウンロードしたalgorithms.zipとalgorithmicx.zipを展開する.
algorithmsは,algorithms.dtxがあれば使える.
algorithmicxは,algorithms.styがあれば使える.
ここでは,Functionを表現するためalgpseudocode.styを使う.
ダウンロードしたファイルを配置した階層構造を以下に示す.
.
├── paper.tex (論文の本体)
├── algorithms.dtx
└── algpseudocode.sty
(4) texファイルからパッケージを呼び出し
論文ファイル(例: paper.tex)で\usepackage{}
を使いパッケージを呼び出す.
\usepackage{algorithm}
\usepackage{algpseudocode}
パッケージ algpseudocode
を呼び出す場合,algorithmicx
の呼び出しは不要である.
You don’t need to manually load the algorithmicx package, as this is done by algpseudocode.
出典: algorithmicx.pdf - P.5
(5) texファイルで擬似コードを記述
本文からの呼び出しは,\ref{your_algorithm_label}
である.
アルゴリズムは,\begin{algorithm}
で \begin{algorithmic}
を囲んだ内部に書く.
以下にalgorithmicxを使った疑似コードの例を示す.
\begin{algorithm}[tb]
\caption{配列から最大値を求める関数}
\label{alg-max-from-array}
\begin{algorithmic}[1]
\Function {max\_in\_array}{$array$}
\State $max \gets 0$
\ForAll {$element \gets array$}
\If {$element > max$}
\State $max \gets element$
\EndIf
\EndFor
\State \Return $max$
\EndFunction
\end{algorithmic}
\end{algorithm}
% 本文での参照方法
\ref{alg-max-from-array}
以下は,実際にビルドした結果である.
細かな記法は,下記サイトやalgorithmicxに付属するalgorithmicx.pdfに書いてある.
便利なコマンド定義
下記のコマンド定義を使うと,ラベルの Algorithm x
を アルゴリズム x
へ変更できる.
% Algorithmをアルゴリズムにする
\makeatletter
\renewcommand{\ALG@name}{アルゴリズム}
\makeatother