投影机覆盖规格的局部范围?

投影机覆盖规格的局部范围?

假设您有一段庞大而复杂的代码,例如,在投影仪框架中逐部分绘制 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}

相关内容