我正在尝试在演示文稿中插入算法的标题beamer
。算法语法正确,使用时可以正常工作,但使用\documentclass{article}
时显示以下错误:\documentclass[11pt]{beamer}
! LaTeX Error: Not in outer par mode.
See the LaTeX manual or LaTeX Companion for explanation.
以下是示例代码:
%\documentclass{article}
\documentclass[11pt]{beamer}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\algdef{SE}[DOWHILE]{Do}{doWhile}{\algorithmicdo}[1]{\algorithmicwhile\ #1}%
\begin{document}
\begin{frame} %comment \begin{frame} and \end{frame} while using article
\begin{algorithm}
\caption{This is comment}
\begin{algorithmic}[1]
\ForAll{$point$ ~in $trajectory$}
\State {$i\gets maxval$}
\Do
\State $success \gets dist(a,b)$
\doWhile{$success \le 0$}
\EndFor
\end{algorithmic}
\end{algorithm}
\end{frame}
\end{document}
以下是 TeX 编译器的详细信息:
pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2016.5.18)
答案1
浮动的典型行为在演示文稿中自然被抑制,因为它与文章的流程不同。因此,在beamer
,figure
s 和table
s 的结构可能与在article
,而beamer
只是把它们放在frame
你使用它们的地方,而不是通过浮动来找到“合适的位置”。
当您使用 时algorithm
,它尚未被格式化为不浮动,这是问题的根源。幸运的是,algorithm
使用定义其浮动algorithm
环境float
反过来,它定义了非浮动说明符[H]
。使用它来保持beamer
快乐:
\documentclass{beamer}
\usepackage{algorithm,algpseudocode}
\algdef{SE}[DOWHILE]{Do}{doWhile}{\algorithmicdo}[1]{\algorithmicwhile\ #1}%
\algnewcommand{\var}{\textit}
\begin{document}
\begin{frame}
\begin{algorithm}[H]% <-------- do not float, stay right [H]ERE!
\caption{This is comment}
\begin{algorithmic}[1]
\ForAll{\var{point} in \var{trajectory}}
\State {$i \gets \var{maxval}$}
\Do
\State $\var{success} \gets dist(a,b)$
\doWhile{$\var{success} \leq 0$}
\EndFor
\end{algorithmic}
\end{algorithm}
\end{frame}
\end{document}
请注意,这与或[H]
完全不同。前者实际上设置了一个浮点数,并认为它是浮点数(因为s 通常与浮点数相关联),而后者仍然设置了一个浮点数,[h]
[h!]
minipage
\caption
\caption
可以移动。有关这方面的常见问题解答,请参阅如何影响 LaTeX 中图形和表格等浮动环境的位置?