本文へ移動

アルゴリズムと疑似コード

疑似コードを \caption 付きの algorithm 環境で囲むと「Algorithm 1」となります。その中で Scissor LaTeX が algorithmic の大文字のコマンド(\STATE、\FOR)を読み取るのは学会風のレイアウトだけなので、ほかの文書では手順を verbatim ブロックに入れてください。

algorithm 環境

algorithm パッケージは、図と同じように番号の付く疑似コード用の環境を提供します。\caption で番号(「Algorithm 1」)が付き、キャプションの後に \label を書けば \ref で参照できます。Scissor LaTeX では、アルゴリズムは書いた場所にとどまり、キャプションはその下に組まれます。

中に何を書くかは手順に使うパッケージによって決まり、対応状況もそこで変わります。

パッケージコマンドScissor LaTeX では
algorithmalgorithm 環境、\caption、\label使える:「Algorithm N」と番号が付き、キャプションは下。
algorithmic\STATE、\IF、\FOR、\WHILE、\RETURN など(大文字)一部のみ:学会風のレイアウトの文書でだけ読み取られ、それ以外では不明なコマンドになる。
algpseudocode(algorithmicx)\State、\If、\For、\EndFor、\Return など非対応:メッセージを出して飛ばされ、手順は 1 行につながる。
algorithm2e\KwIn、\For{..}{..}、\eIf など非対応:メッセージを出して飛ばされる。

どこでも使える疑似コード

Scissor LaTeX のどの文書でも疑似コードを確実に表示するには、algorithm の中に verbatim ブロックを入れるのがいちばんです。番号とキャプションはそのままで、各行のインデントも保たれます。

verbatim で手順を書いたアルゴリズム

LaTeXプリアンブル: \usepackage{algorithm}エディタで開く (新しいタブで開きます)
\begin{algorithm}
\caption{Sum of a list}
\label{alg:sum}
\begin{verbatim}
s := 0
for each a in xs:
    s := s + a
return s
\end{verbatim}
\end{algorithm}
Algorithm~\ref{alg:sum} adds the numbers of a list.
Scissor LaTeX による組版: verbatim で手順を書いたアルゴリズム

数式を含む疑似コードには lstlisting も同じように使えます。または、algorithm 環境の外に、手順を普通のテキストとして番号付きリストで書いてください。

数式を含む、番号付きリストの手順

\textbf{Input:} numbers $a_1, \dots, a_n$.
\begin{enumerate}
  \item Set $s \gets 0$.
  \item For $i = 1, \dots, n$: set $s \gets s + a_i$.
  \item Return $s$.
\end{enumerate}
Scissor LaTeX による組版: 数式を含む、番号付きリストの手順

学会風のレイアウトでの algorithmic

学会風のレイアウト(arXiv、IEEE、NeurIPS、ICML など)は、algorithmic パッケージの大文字のコマンドを読み取ります。for、do、end for、return などのキーワードは太字で組まれ、各コマンドは新しい行から始まります。行番号は描かれず、行は中央に配置されます。問題タブには、使われているレイアウトが表示されます。

arXiv 風の文書での algorithmic

\documentclass{article}
\usepackage{arxiv}
\usepackage{algorithm,algorithmic}
\begin{document}
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}
\STATE $s \gets 0$
\FOR{$i = 1$ to $n$}
  \STATE $s \gets s + a_i$
\ENDFOR
\RETURN $s$
\end{algorithmic}
\end{algorithm}
\end{document}
Scissor LaTeX による組版: arXiv 風の文書での algorithmic

「問題」タブ: Layout in the style of the arXiv preprint style (final mode). Not official. To compile elsewhere, add arxiv.sty from github.com/kourgeorge/arxiv-style.

algpseudocode には対応していません

最近の論文でいちばんよく使われる algpseudocode は、\State や \EndFor のような大文字と小文字の混ざったコマンドを使います。Scissor LaTeX はこれらを知りません。コマンド名は飛ばされ、数式と単語は残りますが、すべてが 1 行につながります。問題タブには、飛ばされたコマンドが一覧表示されます。

algpseudocode:手順が 1 行につながる

LaTeXプリアンブル: \usepackage{algorithm,algpseudocode}エディタで開く (新しいタブで開きます)
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}[1]
\State $s \gets 0$
\For{$i = 1$ to $n$}
  \State $s \gets s + a_i$
\EndFor
\State \Return $s$
\end{algorithmic}
\end{algorithm}

「問題」タブ: Skipped 4 unknown commands: \State, \For, \EndFor, \Return

文書をここでも TeX のインストール環境でも動くようにする必要があるなら、上で示したように手順を verbatim で書いてください。どこでもコンパイルできます。

TeX のインストール環境との違い

パッケージのページは algorithm、algorithmic、algpseudocode です。マニュアルは CTAN にあります:algorithms、algorithmicx、algorithm2e。

アルゴリズムのパッケージ、コードリスト、学会風のレイアウト もあわせてご覧ください。

よくある質問

LaTeX でアルゴリズムを書くにはどうすればよいですか?

\caption 付きの algorithm 環境を使い、その中に手順を書きます。Scissor LaTeX では、手順は verbatim ブロックに書くか、学会風のレイアウトで algorithmic の \STATE コマンドを使うのがいちばんうまくいきます。

\State の行が 1 行につながってしまうのはなぜですか?

\State は、Scissor LaTeX が対応していない algpseudocode のコマンドです。コマンド名が飛ばされるため、手順が 1 行につながります。代わりに verbatim で手順を書いてください。

アルゴリズムを番号で参照できますか?

はい。\caption の後に \label{alg:name} を書き、Algorithm~\ref{alg:name} と書きます。

このページの例はすべて、サイトのビルド時に Scissor LaTeX で組版されています。 最終更新:2026-11-07