編輯1:

編輯1:

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

相關內容