假设您有一段庞大而复杂的代码,例如,在投影仪框架中逐部分绘制 TikZ 图片,具有复杂的叠加和操作规范。还假设代码不使用<+>
和<.>
叠加很多,因为预期的序列对他们来说太复杂了。
现在假设您想在另一个演示文稿中重复使用此代码,但是在一个框架中,这个复杂的幻灯片序列应该从第二张或第三张幻灯片开始,因为现在您想先显示其他内容。
您是否必须遍历所有代码,将 +3 添加到每个覆盖规范的索引中?或者是否有任何方法可以对一段代码进行范围限定,假装覆盖规范从 1 开始,而实际上它们从 3 开始?
编造示例:
\begin{overlayscope}{3}
\only<1>{LoL}
\end{overlayscope}
应该大致等于:
\only<4>{LoL}
这有可能吗?我也不知道语义是否正确,例如,规范<0>
通常表示“不可见”,而添加偏移量可能会产生意想不到的效果。但这将是一个很好的开始。
答案1
有点棘手,但利用 beamer 的 3 个功能应该可以做到:
1)您可以告诉beamer
仅在幻灯片中显示某些覆盖层\begin{frame}<4>
。
2)\againframe<1-3>{<label name>}
你可以“重复使用”幻灯片
因此,通过 1) 和 2),我们可以有效地重新排列叠加层的显示顺序。这样,您就可以在幻灯片末尾添加新内容(应放在最前面)。
3) 最后一件事是隐藏最后一张(现在是第一张)幻灯片上的先前内容。这可以通过\visible<1-3>{
或类似功能来实现。
\documentclass{beamer}
\begin{document}
\begin{frame}<4>[label=myframe]
\only<1-4>{something new should be before}
\visible<1-3>{
\only<1->{1}
\only<2->{2}
\only<3->{3}
}
\end{frame}
% to keep the framenumber constant
\addtocounter{framenumber}{-1}
\againframe<1-3>{myframe}
\end{document}
答案2
一个简单的解决方案就是欺骗投影仪并将slideinframe
-counter 减少 1。这看起来有点太简单了,所以可能会破坏其他东西 - 使用时请自担风险。
\documentclass{beamer}
\makeatletter
\newcommand{\trickbeamer}{%
\advance\beamer@slideinframe by-1%
}%
\makeatother
\begin{document}
\begin{frame}
bla
\pause\trickbeamer
\only<1->{1}
\only<2->{2}
\only<3->{3}
\end{frame}
\end{document}