我正在尝试编写一个包含嵌套 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
包中的选项;-)