
Estou tentando escrever um algoritmo que contém loops for aninhados da seguinte maneira:
\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}
... e recebo os seguintes erros:
Undefined control sequence
Package algorithmicx: Some blocks are not closed!!!
Estou usando o modelo online do IEEE e também verifiqueiessepergunta sobre loops for aninhados com algoritmo, sem sorte.
EDITAR 1:
Alterado \Endfor
para \EndFor
. Os erros desapareceram, mas me deram o mesmo resultado.
Responder1
Suponho que você esteja compilando seu documento em "modo batch", que não para nos erros, mas tenta continuar, ignorando os problemas.
No seu caso, a mensagem de erro completa diz:
! Undefined control sequence.
l.16 \Endfor
Então o problema é que o comando \Endfor
não é reconhecido, mas o tex tenta continuar mesmo assim, e depois produz outro erro sobre os blocos não terem sido fechados.
O problema é resolvido escrevendo \EndFor
(que é a grafia correta deste comando) em vez de \Endfor
.
Se você quiser ver o "end for" na saída, remova a noend
opção do pacote ;-)