
我正在嘗試編寫一個包含巢狀 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
套件中的選項;-)