
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 \State
Anweisungen ohne den \Funktionstext eingeben, der Fehler scheint also irgendwie damit zusammenzuhängen.
Antwort1
Das Problem hier ist Ihre Interpretation der an der algorithmic
Konstruktion beteiligten Makros. Das \State
Makro akzeptiert kein Argument. Verwenden Sie also
\State <state content>
und nicht
\State{<state content>}
In ähnlicher Weise \Function
nimmt 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 \Function
bzw. 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:
\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}