我读过了这些二 帖子注意,但是...我仍然想用投影仪覆盖规范来做一些事情,但这些事情似乎并不简单。
简而言之,我需要混合绝对叠加相对叠加真正关心的是因式分解,责任性和灵活性. 就像“另一种思考覆盖的方式”。
下面是我想要重构的示例的硬编码版本:
my \alert<1>{frame}: \hfill \visible<7>{cuckoo!}
\begin{itemize}
\item<2-> on the \alert<2>{second} slide
\item<3-> on the \alert<3>{third} slide
\item<4-> on the \alert<4>{fourth} then the \alert<5>{fifth} slides
\item<6-> on the \alert<6-7>{sixth} slide
\item<8-> on the \alert<8>{eighth} slide
\end{itemize}
\visible<9->{but keep it \alert<9-10>{flexible!}}
\visible<10-11>{.. please :'(}
以下是我想要重写的方式:
% sweet dream: `*` would mean "after the previous one, increase counter"
% `|` would mean "same as the previous one, counter safe"
% `*(2)` would add ".. during two slides, increase counter"
% `|(2)` would add ".. during two slides, counter safe"
% `|(+1)` would mean "one after the previous one, counter safe"
% `*(+2)` would mean "two after the previous one, increase counter"
% `(7)*` would mean "one after the absolute seventh one, increase counter"
my \alert<1>{frame}: \hfill \visible<7>{cuckoo!} % counter: 1
\begin{itemize}
\item<*-> on the \alert<|>{second} slide % counter: 2
\item<*-> on the \alert<|>{third} slide % counter: 3
\item<*-> on the \alert<|>{fourth} then the \alert<|(+1)>{fifth} slides % counter: 4
\item<*(+2)-> on the \alert<|(2)>{sixth} slide % counter: 6
\item<(7)*-> on the \alert<|>{eighth} slide % counter: 8
\end{itemize}
\visible<*->{but keep it \alert<|(2)>{flexible!}} % counter: 9
\visible<*(2)>{.. please :'(} % counter: 10
% the absolute `7` would be factorized away with `\def\anchor{7}`
.. 当然,据我所知,这样的和叠加运算符不存在。我一直*
在捣鼓,,,,,|
+
.
+(1)
.(1)
\stepcounter
ETC。没有成功(主要是陷入无休止的编译循环)。
我能从这种替代的、 oniric 覆盖语言中获得最接近的东西是什么?
我自己做吗?
我知道这意味着我的代码是线性读取的,但这可能不是 beamer 实际的工作方式。
我认为编写参数化命令和专用计数器并不困难,它们可以扩展到我需要的实际绝对覆盖(IE扩展到上面的硬编码示例)。 但是如何让它们在连续的幻灯片编译过程中不被多次评估呢?
一旦它们被写入,如何进入覆盖语法以便\alert<\sameAsPreviousOneCounterSafeAdd{2}>{sixth}
从中进行扩展\alert<|(2)>{sixth}
?LaTeX 需要糖。
答案1
也许我错过了什么,但你“梦想”中的规范似乎只是
\documentclass{beamer}
\begin{document}
\begin{frame}
my \alert<+>{frame}: \hfill \visible<7>{cuckoo!} % Might use <.(6)>
\begin{itemize}[<+->]
\item on the \alert<.>{second} slide
\item on the \alert<.>{third} slide
\item on the \alert<.>{fourth} then the \alert<+>{fifth} slides
\item on the \alert<.-+>{sixth} slide
\item on the \alert<.>{eighth} slide
\end{itemize}
\visible<+->{but keep it \alert<.-+>{flexible!}}
\visible<.-+>{.. please :'(}
\end{frame}
\end{document}
正如其他帖子中提到的,要记住的关键是每次+
遇到a时,它beamerpauses
会将计数器增加 1。请注意,如果您愿意,可以手动设置它(\secounter{beamerpauses}{<some-value>}
),但在大多数情况下,这会导致更多的复杂性而不是更少的复杂性。
答案2
非常类似于约瑟夫·赖特答案,但没有自动逐项揭示:
\documentclass{beamer}
\begin{document}
\begin{frame}
my \alert<+>{frame}: \hfill \visible<7>{cuckoo!}
\begin{itemize}
\item<+-> on the \alert<.>{second} slide
\item<+-> on the \alert<.>{third} slide
\item<+-> on the \alert<.>{fourth} then the \alert<+>{fifth} slides
\item<+-> on the \alert<.,+>{sixth} slide
\item<.(-1)-> on the \alert<+>{eighth} slide
\end{itemize}
\visible<+->{but keep it \alert<.,+>{flexible!}}
\visible<.>{.. please :'(}
\end{frame}
\end{document}