使用 beamer 和 animate 包制作类似 Powerpoint 的动画

使用 beamer 和 animate 包制作类似 Powerpoint 的动画

我想利用 -package 用 LaTeX 实现一个简单的“飞入”动画animate。我的想法是插入一个\hspace长度参数递减的动画。但是,根本没有动画。

MWE(改编自http://texample.net/tikz/examples/animated-definite-integral/):

\documentclass{beamer}

\usepackage{animate, ifthen}

\newcounter{m}
\setcounter{m}{0}

\newlength{\dummy}
\setlength{\dummy}{8cm}

\begin{document}
    \begin{frame}[fragile]
        \begin{animateinline}{2}
            \whiledo{\them < 21} {  % Execute 21 times
                \hspace{\dummy} Hello.
                \addtolength{\dummy}{-.4cm} % Decrease \dummy
                \stepcounter{m}
                \ifthenelse{\them < 21} {
                    \newframe % Create new frame, if condition satisfied
                }{
                    \end{animateinline}\relax % Otherwise end environment
                }
            }
    \end{frame}
\end{document}

也许我应该只使用 TikZ 来修改这样的坐标/参数,但我最初认为,这应该可行,并且是一种实现我的目标的更简约的方式。

为什么这不起作用?如果我的方法错了,有什么更好的方法吗?

答案1

不推荐使用\whiledofor 围绕参数化动画帧构建循环。这可能会导致意外结果,因为\newframe嵌入到其循环主体中可能会隐藏维度和计数器的本地分配。

相反,使用 pkganimate的内置命令\multiframe

\documentclass{beamer}

\usepackage{animate}

\begin{document}
  \begin{frame}{Fly-in example}
    \begin{animateinline}[autoplay]{20}
      \multiframe{21}{dim=8cm+-0.4cm}{
        \makebox[\widthof{\hspace{8cm}Hello.}][l]{\strut\hspace{\dim}Hello.}
      }
    \end{animateinline}
  \end{frame}
\end{document}

在此处输入图片描述

相关内容