BEARBEITEN 1:

BEARBEITEN 1:

Ich versuche, einen Algorithmus zu schreiben, der verschachtelte For-Schleifen wie folgt enthält:

\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}

Dies ist das Ergebnis: Bildbeschreibung hier eingeben

... und ich erhalte folgende Fehlermeldungen:

Undefined control sequence
Package algorithmicx: Some blocks are not closed!!!

Ich verwende die Online-Vorlage von IEEE und habe auch geprüftDasFrage zu verschachtelten For-Schleifen mit Algorithmus, ohne Erfolg.


BEARBEITEN 1:

Geändert \Endforin \EndFor. Die Fehler sind verschwunden, aber ich erhalte dieselbe Ausgabe.

Antwort1

Ich nehme an, dass Sie Ihr Dokument im „Batch-Modus“ kompilieren, der bei Fehlern nicht anhält, sondern versucht, fortzufahren und Probleme zu überspringen.

In Ihrem Fall lautet die vollständige Fehlermeldung:

! Undefined control sequence.
l.16 \Endfor

Das Problem besteht also darin, dass der Befehl \Endfornicht erkannt wird, Tex aber trotzdem versucht, fortzufahren, und später eine weitere Fehlermeldung über nicht geschlossene Blöcke erzeugt.

Das Problem wird gelöst, indem Sie \EndFor(das ist die korrekte Schreibweise dieses Befehls) anstelle von schreiben \Endfor.

Wenn Sie das „end for“ in der Ausgabe sehen möchten, entfernen Sie die noendOption im Paket ;-)

verwandte Informationen