
次のようにネストされた for ループを含むアルゴリズムを記述しようとしています。
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\title{Algorithm example}
\author{\LaTeX{}}
\date{\today}
\begin{document}
\maketitle
\section{Gibbs sampling Algorithm}
Algorithms can be included using the commands as shown in algorithm \ref{alg:gibbs}.
\begin{algorithm}
\caption{Collapsed Gibbs sampling algorithm for inference}\label{alg:gibbs}
\begin{algorithmic}[1]
\State Choose initial $z$ and $\xi$.
\For{$T$ iterations}
\For{$D$ Subjects}
\For{$N_d$ time segments}
\State do something
\EndFor
\EndFor
\EndFor
\end{algorithmic}
\end{algorithm}
\end{document}
...そして次のエラーが発生します:
Undefined control sequence
Package algorithmicx: Some blocks are not closed!!!
私はIEEEのオンラインテンプレートを使用しており、これアルゴリズムを使用したネストされた for ループに関する質問ですが、うまくいきませんでした。
編集1:
\Endfor
に変更しました\EndFor
。エラーは消えましたが、出力は同じです。
答え1
おそらく、ドキュメントを「バッチ モード」でコンパイルしているのでしょう。このモードでは、エラーが発生しても停止せず、問題をスキップして続行しようとします。
あなたの場合、完全なエラーメッセージは次のようになります:
! Undefined control sequence.
l.16 \Endfor
したがって、問題は、コマンドが\Endfor
認識されないにもかかわらず、tex が続行しようとし、後でブロックが閉じられていないという別のエラーが発生することです。
\EndFor
この問題は、 の代わりに (このコマンドの正しいスペル) と書くことで解決します\Endfor
。
出力に「end for」を表示したい場合は、noend
パッケージ内のオプションを削除してください ;-)