在 Beamer 中插入算法说明

在 Beamer 中插入算法说明

我正在尝试在演示文稿中插入算法的标题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

浮动的典型行为在演示文稿中自然被抑制,因为它与文章的流程不同。因此,在beamerfigures 和tables 的结构可能与在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 中图形和表格等浮动环境的位置?

相关内容