Algorithmus-Paketfehler in Beamer

Algorithmus-Paketfehler in Beamer

Ich habe das folgende triviale Beispiel, das ich einfach nicht kompilieren kann.

\documentclass{beamer}

\mode<presentation> {
\usetheme{Madrid}
\usecolortheme[RGB={0,0,0}]{structure}
}

\usepackage{amsmath,amsfonts,graphicx}
\usepackage{algpseudocode}
\usepackage{tikz, nth}
\usepackage{tkz-graph}

\begin{document}

\begin{frame}
\begin{algorithmic}
\Function{deleteMax}{}{
\State{$P \gets$ \Call{Skip-Search}{$L$, Max}}
}
\EndFunction
\end{algorithmic}
\end{frame}

\end{document}

Dies erzeugt den Fehler

 ! Fehlender \endcsname eingefügt. \ALG@currentblock@2

das ich einfach nicht loswerde. Seltsamerweise erhalte ich keine Fehlermeldung, wenn ich eine if-Anweisung hinzufüge.

Hinweis: Ich kann beliebig viele \StateAnweisungen ohne den \Funktionstext eingeben, der Fehler scheint also irgendwie damit zusammenzuhängen.

Antwort1

Das Problem hier ist Ihre Interpretation der an der algorithmicKonstruktion beteiligten Makros. Das \StateMakro akzeptiert kein Argument. Verwenden Sie also

\State <state content>

und nicht

\State{<state content>}

In ähnlicher Weise \Functionnimmt you think drei Argumente an, von denen das letzte der Hauptteil der Funktion ist. Dies ist nicht wahr, da der Anfang und das Ende der Funktion durch \Functionbzw. gegeben sind \EndFunction(siehe Abschnitt3.1.6. Der Funktionsblockdesalgorithmicx Dokumentation). Verwenden Sie also

\Function{<name>}{<parms>}
  <body>
\EndFunction

und nicht

\Function{<name>}{<parms>}{
  <body>
}
\EndFunction

Hier ist ein Minimalbeispiel, das das bietet, was ich oben beschrieben habe:

Bildbeschreibung hier eingeben

\documentclass{beamer}

\usepackage{algpseudocode}

\begin{document}

\begin{frame}
  \begin{algorithmic}
    \Function{deleteMax}{}
      \State $P \gets$ \Call{Skip-Search}{$L$, Max}
    \EndFunction
  \end{algorithmic}
\end{frame}

\end{document}

verwandte Informationen