
Estoy intentando escribir un algoritmo que contenga bucles for anidados de la siguiente manera:
\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}
... y me sale los siguientes errores:
Undefined control sequence
Package algorithmicx: Some blocks are not closed!!!
Estoy usando la plantilla en línea de IEEE y también verifiquéestepregunta sobre bucles for anidados con algoritmo, sin suerte.
EDITAR 1:
Cambiado \Endfor
a \EndFor
. Los errores desaparecieron pero me dan el mismo resultado.
Respuesta1
Supongo que estás compilando tu documento en "modo por lotes", que no se detiene ante los errores sino que intenta continuar, saltándose los problemas.
En su caso, el mensaje de error completo dice:
! Undefined control sequence.
l.16 \Endfor
Entonces, el problema es que el comando \Endfor
no se reconoce, pero tex intenta continuar de todos modos y luego produce otro error acerca de que los bloques no se cierran.
El problema se soluciona escribiendo \EndFor
(que es la ortografía correcta de este comando) en lugar de \Endfor
.
Si desea ver el "fin de" en el resultado, elimine la noend
opción en el paquete ;-)