思考相对覆盖的另一种方式?

思考相对覆盖的另一种方式?

我读过了这些帖子注意,但是...我仍然想用投影仪覆盖规范来做一些事情,但这些事情似乎并不简单。

简而言之,我需要混合绝对叠加相对叠加真正关心的是因式分解责任性灵活性. 就像“另一种思考覆盖的方式”。

下面是我想要重构的示例的硬编码版本:

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}

相关内容