Beamer 中的演算法包錯誤

Beamer 中的演算法包錯誤

我有以下簡單的範例,但無法編譯。

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

這會產生錯誤

 !插入缺少 \endcsname。 \ALG@當前區塊@2

我就是無法擺脫它。奇怪的是,如果我加入 if 語句,我不會收到錯誤。

注意:我可以在沒有 \Function body 的情況下放置任意數量的\State語句,因此該錯誤似乎與此相關。

答案1

這裡的問題是您對algorithmic構建所涉及的宏的解釋。此\State宏不帶參數。所以,使用

\State <state content>

並不是

\State{<state content>}

以類似的方式,您認為\Function需要三個參數,最後一個是函數體。這是不正確的,因為函數的開始和結束由\Function和給出\EndFunction給出(參見部分3.1.6。功能區塊algorithmicx 文件)。所以,使用

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

並不是

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

這是一個提供我上面描述的內容的最小範例:

在此輸入影像描述

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

相關內容