循环与 animateinline newframe 不兼容吗?

循环与 animateinline newframe 不兼容吗?

编辑:Marmot 为我提供了替代解决方案,对此我非常感激。但是问题仍然存在,因为我想知道我的方法有什么问题。

我想用 Beamer 制作一个演示文稿,在一帧(Beamer 帧)上,我想制作超过 30 帧(动画)的 tikz 动画。我不想手动输入每一帧(动画),所以我尝试使用 \loop 来创建帧(动画)。

删除所有多余的代码后,我将冲突的部分简化为:

\documentclass{beamer}
\usetheme{Warsaw}
\usepackage[polish]{babel}
\usepackage[cp1250]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{animate}

\begin{document}
\begin{frame}
\newcount\spiniter
\spiniter=1
\begin{animateinline}[loop,controls]{10}
Text 0
\loop
\newframe
Text \the\spiniter
\advance \spiniter 1
\ifnum \spiniter<10
\repeat
\end{animateinline}
\end{frame}
\end{document}

编译失败并出现! Improper \prevdepth错误。

注意:示例不使用 tikz,因为我想尽可能地隔离冲突,代码示例应该为“文本 x”制作动画,从 x=0 开始,以 x=9 结束。

为了进行比较,这个手动准备的命令集有效:

\documentclass{beamer}
\usetheme{Warsaw}
\usepackage[polish]{babel}
\usepackage[cp1250]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{animate}


\begin{document}
\begin{frame}
\begin{animateinline}[loop,controls]{10}
Text 0
\newframe
Text 1
\end{animateinline}
\end{frame}
\end{document}

根据需要不断在“文本 0”和“文本 1”之间切换(忽略按钮的糟糕定位,这并不相关)。

有人能建议一些方法来实现我想要做的事情吗?所有其他绘图命令都已编写并用整数参数化。

编辑:非常感谢 marmot,他在评论中向我指出了包含替代解决方案的问题。但是如果有人知道,我想知道我的方法有什么问题。

答案1

框架内容暂时保存在 TeX 保存框中,然后被提炼成所谓的 PDF 表单 XObjects。在下面的代码中,\newframeanimateinline命令和环境被 LaTeX 框保存命令替换,导致在处理过程中出现观察到的错误:

\documentclass{beamer}

\usepackage{animate}

\begin{document}
\begin{frame}
\newcount\spiniter

\spiniter=1
\begin{lrbox}{0}
Text 0
\loop
  \end{lrbox}
  \begin{lrbox}{0}
  Text \the\spiniter
  \advance \spiniter by1
  \ifnum \spiniter<10
\repeat
\end{lrbox}

\end{frame}
\end{document}

有趣的是,如果使用标准类,或者在 的情况下环境已被删除,则不会发生beamer错误frame

\documentclass{beamer}
%\documentclass{article}

\usepackage{animate}

\begin{document}
%\begin{frame}
\newcount\spiniter

\spiniter=1
\begin{lrbox}{0}
Text 0
\loop
  \end{lrbox}
  \begin{lrbox}{0}
  Text \the\spiniter
  \advance \spiniter by1
  \ifnum \spiniter<10
\repeat
\end{lrbox}

%\end{frame}
\end{document}

相关内容