#はじめに
初投稿です。TeXでのアルゴリズムの書き方をまとめました。
最近論文を書くときにアルゴリズム(疑似コード)を載せたくなったんですが、導入から具体的な記述方法までまとまった記事がなかったのでまとめます。
#目次
- 導入方法
- いろいろな記述法
#1. 導入方法
以下の環境で動作を確認しています。
- オンラインLaTeXエディタOverleaf
- IEEEテンプレート
###0. 環境構築(ローカルでやる場合)
TeXインストーラ3のようなローカルTeX環境では標準でパッケージが付属していないので下記サイトからインストールする。
http://tug.ctan.org/tex-archive/macros/latex/contrib/
"algorithms.zip"をダウンロードしてきて解凍し、2つのスタイルファイル("algorithm.sty"、"algorithmic.sty")をTeXソースファイルと同じディレクトリに格納しておく。Overleafで書く場合は標準で対応しているのでTeX文章の頭に\usepackage{algorithmic}, \usepackage{algorithm}
を入れるだけで良い。
###1. TeXソースファイル内の書き方
.texファイル内に以下のように記述する。ちなみに今回投稿したIEEE系ではアルゴリズムはfloat環境ではなくfigure環境で用いるようにとの指示がある1 ので\begin{figure}[!t]~\end{figure}
がはいっていますが特にfigure環境にする必要がなければ抜いてOKです。
\usepackage{algorithmic}
\usepackage{algorithm}
\begin{figure}[!t]
\begin{algorithm}[H]
\caption{Calculate $y = x^n$}
\label{alg1}
\begin{algorithmic}[1] #行番号をつけないときは[1]は不要
\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}
\end{figure}
#2. いろいろな記述法
アルゴリズムの書き方をまとめていきます。
###1. 単純代入
\STATE <text>
###2. If文
\IF{<condition1>}
\STATE some processing
\ELSIF{<condition2>}
\STATE some processing
\ELSE
\STATE some processing
\ENDIF
###3. forループ
\FOR{<condition>}
\STATE some processing
\ENDFOR
###4. whileループ
\WHILE{<condition>}
\STATE some processing
\ENDWHILE
###5. repeat-untilループ
\REPEAT
\STATE some processing
\UNTIL{<condition>}
###6. 論理演算
<expression> \AND <expression>
<expression> \OR <expression>
<expression> \XOR <expression>
\NOT <expression>
###7. 前提条件
\REQUIRE <condition>
###8. 事後条件
\ENSURE <condition>
###9. return文
\RETURN <text>
###10. 真偽
\RETURN \TRUE
\RETURN \FALSE
###11. 文字のプリント
\PRINT <text>
###12. コメント
\COMMENT{<comment>}
#参考文献
TeXでのアルゴリズム(擬似コードの記述) algorithms パッケージ
http://zellij.hatenablog.com/entry/20110421/p1
algorithmsパッケージ付属リファレンス
http://tug.ctan.org/tex-archive/macros/latex/contrib/algorithms/
-
IEEEtran_HOWTO.pdfの"X. FLOATING STRUCTURES/B. Algorithms" ↩