アルゴリズムと疑似コード
疑似コードを \caption 付きの algorithm 環境で囲むと「Algorithm 1」となります。その中で Scissor LaTeX が algorithmic の大文字のコマンド(\STATE、\FOR)を読み取るのは学会風のレイアウトだけなので、ほかの文書では手順を verbatim ブロックに入れてください。
algorithm 環境
algorithm パッケージは、図と同じように番号の付く疑似コード用の環境を提供します。\caption で番号(「Algorithm 1」)が付き、キャプションの後に \label を書けば \ref で参照できます。Scissor LaTeX では、アルゴリズムは書いた場所にとどまり、キャプションはその下に組まれます。
中に何を書くかは手順に使うパッケージによって決まり、対応状況もそこで変わります。
| パッケージ | コマンド | Scissor LaTeX では |
|---|---|---|
| algorithm | algorithm 環境、\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 で手順を書いたアルゴリズム
\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.数式を含む疑似コードには 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}学会風のレイアウトでの 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}
「問題」タブ: 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 行につながる
\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