
我有以下簡單的範例,但無法編譯。
\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}