编辑: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。在下面的代码中,\newframe
和animateinline
命令和环境被 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}