LoginSignup
68
57

More than 3 years have passed since last update.

TeX論文にアルゴリズム(疑似コード)を書く方法

Last updated at Posted at 2020-10-22

はじめに

初投稿です。TeXでのアルゴリズムの書き方をまとめました。
最近論文を書くときにアルゴリズム(疑似コード)を載せたくなったんですが、導入から具体的な記述方法までまとまった記事がなかったのでまとめます。

目次

  1. 導入方法
  2. いろいろな記述法

1. 導入方法

以下の環境で動作を確認しています。

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}

これを実行すると以下のように表示される。
alg1.png

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/


  1. IEEEtran_HOWTO.pdfの"X. FLOATING STRUCTURES/B. Algorithms" 

68
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
57