
Я пытаюсь написать алгоритм, содержащий вложенные циклы следующим образом:
\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
в пакете ;-)