
Tengo el siguiente ejemplo trivial que simplemente no puedo compilar.
\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}
Esto produce el error
! Falta \endcsname insertado. \ALG@bloqueactual@2
del que simplemente no puedo deshacerme. Por extraño que parezca, si agrego una declaración if, no aparece ningún error.
Nota: Puedo poner cualquier cantidad de \State
declaraciones sin el cuerpo \Function, por lo que el error parece estar relacionado con eso de alguna manera.
Respuesta1
El problema aquí es su interpretación de las macros involucradas en la algorithmic
construcción. La \State
macro no acepta argumentos. Entonces, usa
\State <state content>
y no
\State{<state content>}
De manera similar, piensa \Function
que toma tres argumentos, el último de los cuales es el cuerpo de la función. Esto no es cierto, ya que el inicio y el final de la función están dados por \Function
y \EndFunction
, respectivamente (ver sección3.1.6. el bloque de funcionesdelalgorithmicx
documentación). Entonces, usa
\Function{<name>}{<parms>}
<body>
\EndFunction
y no
\Function{<name>}{<parms>}{
<body>
}
\EndFunction
Aquí hay un ejemplo mínimo que proporciona lo que describí anteriormente:
\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}