阅读手册中的以下引文时beamer
,我有点困惑:
当你写作时
<.->
,类似的事情<+->
发生了除了计数器beamerpauses
没有增加,并且除了您将得到减一的值beamerpauses
。因此,一个点(可能后跟偏移量)只是扩展到计数器的当前值beamerpauses
减一(可能为偏移量)。
我对最后一句话的理解有些困难,我发现我无法回答以下任何问题:
- 指定的偏移量应该是负数还是正数?
- 偏移量应该如何指定?手册没有提供任何示例。
- 在应用偏移量之前它是否增加了(或者可能减少了)?
beamerpauses
柜台的价值是多少之内覆盖所适用的代码?- 这个计数器的值是多少后规格?
最小非工作示例
为了更好地理解这一点,我创建了以下最小示例,才不是編輯。
\documentclass{beamer}
\begin{document}
\newcommand\cn{{\small\emph{\textbf{Beamer pauses is \arabic{beamerpauses}}}}}
\begin{frame}[fragile]\frametitle{Dot Notation in Overlays}
\begin{enumerate}
\item This is my first item, no overlay specification; \cn
\item<+-> This is my second item, overlay specification is \verb/<+->/; \cn
\item<.-> This is my third item, overlay specification is \verb/<.->/; \cn
\item This is my fourth item, no overlay specification; \cn
\item<.-> This is my fifth item, overlay specification is \verb/<.->/; \cn
\item<.(1)-> This is my sixth item, overlay specification is \verb/<.(1)->/; \cn
\item This is my seventh item, no overlay specification; \cn
\item<.(-1)-> This is my eighth item, overlay specification is \verb/<.(-1)->/; \cn
\item This is my ninth item, no overlay specification; \cn
\item<.(-2)-> This is my tenth item, overlay specification is \verb/<.(-2)->/; \cn
\item This is my eleventh item, no overlay specification; \cn
\item<.(+1)-> This is my twelfth item, overlay specification is \verb/<.(+1)->/; \cn
\item This is my thirteenth item, no overlay specification; \cn
\item<.(+2)-> This is my fourteenth item, overlay specification is \verb/<.(+2)->/; \cn
\item This is my fifteenth and final item, with no overlay specification; \cn
\end{enumerate}
\end{frame}
\end{document}
我收到的错误信息是:
Runaway argument?
! File ended while scanning use of \next.
<inserted text>
\par
<*> myfile.tex
?
我的请求是:您能否帮助我编译这个例子,更重要的是,根据我未能发现的一般原理解释输出。
最小在职的例子
下面的例子解释了我迄今为止所发现的内容,也是基于下面的讨论。
\documentclass{beamer}
\usepackage{color}
\newcommand\red[1]{\textcolor{red}{#1} }
\newcommand\blue[1]{\textcolor{blue}{#1} }
\makeatletter
\newcommand*{\overlaynumber}{\number\beamer@slideinframe}
\makeatother
\newcommand\noOverlay{\red{No OS---permanent} \cn}
\newcommand\plusMinus{\blue{OS is \texttt{<+->};} \cn}
\usepackage{multicol}\raggedcolumns
\newcommand\ct{\texttt{\textbackslash{}beamerpauses}}
\newcommand\cn{\hfill\textcolor{green!50!black}{\tiny\ct=\arabic{beamerpauses}}}
\begin{document}
\scriptsize
\renewcommand\baselinestretch{0.8}
\begin{frame}\frametitle{Beamer's Overlay Specification (OS) With \texttt{<.$X$>}}
\alert{\textbf{Slide \#\overlaynumber}}
\begin{multicols*}{2}
\begin{enumerate}
\item\noOverlay
\item<+->\plusMinus
\item<+->\plusMinus
\item<+->\plusMinus
\item\noOverlay
\item<.->OS \texttt{<.->} means \emph{present with last overlay},
without advancing \ct; \cn
\item\noOverlay
\item<.(0)->OS \texttt{<.(0)->} is just the same as \texttt{<.->}; \cn
\item<.-> in fact, all consecutive occurrences of the \texttt{<.->} OS are displayed together. \cn
\item\noOverlay
\item\plusMinus
\item<.(-1)-> OS, \texttt{<.(-1)->} means: present the overlayed
content \emph{\underline{two} slides before} the current value of \ct; \ct{} does not change; \cn
\item<+->\plusMinus
\item<+->\plusMinus
\item<.(-2)-> OS \texttt{<.(-2)->} means: present the overlayed
content \emph{\underline{three} slides before} the current value of counter \ct; as usual, the counter \ct{} does not change; \cn
\item\noOverlay
\item<.(1)-> OS \texttt{<.(1)->} means:
present with \emph{current} overlay; do not advance \ct; \cn
\item\noOverlay
\item<.(2)-> OS \texttt{<.(2)->} means:
present with \emph{next} overlay; do not advance \ct; \cn
\item<.(3)-> Similarly, OS \texttt{<.(3)->} means:
present with overlay \emph{after the next}; as usual, do not advance \ct; \cn
\item\noOverlay
\item<+->\plusMinus
\item\noOverlay
\item<+->\plusMinus
\item<+->\plusMinus
\item<+->\plusMinus
\end{enumerate}
\end{multicols*}
\end{frame}
\end{document}
答案1
在了解.
其工作原理之前,我认为有必要简要了解一下+
覆盖规范中的工作原理,并将其与仅包含明确数字的“简单”规范联系起来。我将最后讨论偏移量,因为它们更复杂。
对于简单的数字情况
\begin{itemize}
\item<1-> From the first slide
\item<2-> From the second slide
\item<3-> From the third slide
...
\end{itemize}
这个想法很明确:具有覆盖规范的内容1-
会出现在第一张幻灯片和任何后续幻灯片上,而更复杂的设置(例如<1,3-5,7>
)也是可能的并且是人类可读的。
在 的情况下+
,当读取覆盖规范时,如果用计数器的当前值beamer
替换所有标记,则递增计数器(以应用于它找到的下一个案例)。因此,假设框架中没有其他覆盖,+
beamerpauses
\begin{itemize}
\item<+-> From the first slide
\item<+-> From the second slide
\item<+-> From the third slide
...
\end{itemize}
相当于前面的例子:第一个+
被 替换1
,第二个被 替换2
,第三个被 替换3
。
这个想法.
是,它允许你拥有两个(或更多)等效的覆盖规范。例如,如果我们想要做
\begin{itemize}
\item<1-> From the first slide
\item<1-> From the first slide
\item<2-> From the second slide
\item<2-> From the second slide
...
\end{itemize}
如果没有对数字进行硬编码,我们就不能直接使用+
。相反,我们可以使用.
,这实际上意味着“重复最后一个值beamerpauses
”:
\begin{itemize}
\item<+-> From the first slide
\item<.-> From the first slide
\item<+-> From the second slide
\item<.-> From the second slide
...
\end{itemize}
这里,第一行beamerpauses
是1
,所以+
变成1
。第二行中,该值重复出现,所以.
被 替换为1
。第三行beamerpauses
是2
(因为+
第一行有 ),所以我们最终得到的结果与我的硬编码情况相同。
请注意,虽然beamer
手册描述了代码级别实际发生的情况,但将其视为.
“重复上一次使用的值+
”在概念上更容易,并且结果相同。(替换总是使用beamerpauses
,并且因为+
会增加它,所以你必须退后一步才能.
做正确的事情。)
接下来,我们开始讨论偏移业务,这是相当先进的。同样,如果我们先进行硬编码演示,我们可能会
\begin{itemize}
\item<2-> From the second slide
\item<3-> From the third slide
\item<4-> From the fourth slide
...
\end{itemize}
可以“灵活地”做到
\begin{itemize}
\item<+(1)-> From the first slide
\item<+(1)-> From the second slide
\item<+(1)-> From the first slide
...
\end{itemize}
这里的想法是,括号中的值会“调整”替换,因此+
这里的符号将被替换为比正常值“提前”的值。请注意,这beamerpauses
仍然是“正确的”,因此在上面的例子中,它1
在第一行,2
在第二行,ETC。
.
语法上也完全一样
\begin{itemize}
\item<+-> From the first slide
\item<.(1)-> From the second slide
\item<.(2)-> From the third slide
\item<+-> From the second slide
...
\end{itemize}
但正如最后一行所示,beamerpauses
并没有增加。
括号语法的思想是允许相对的无需修复绝对覆盖数字。但是,您需要确保这些值是合理的。在问题中,行
\item<.(-2)-> This is my tenth item, overlay specification is \verb/<.(-2)->/; \cn
导致错误,因为最后一个+
被替换为1
。因此减去 2 会得到一个覆盖数-1
,这是无效的。beamer
代码没有进行健全性测试,因此您会得到一个低级错误:也许可以纠正,但您真的需要注意您的偏移量!
另一件需要注意的事情是,你真的不想+
在覆盖层中出现“额外”的符号。例如,在以下行中
\item<.(+1)-> This is my twelfth item, overlay specification is \verb/<.(+1)->/; \cn
以正常方式替换+
为的当前值beamerpauses
,因此此行首先转换为
\item<.(21)-> This is my twelfth item, overlay specification is \verb/<.(+1)->/; \cn
然后应用偏移:幻灯片 22!想必你想要
\item<.(1)-> This is my twelfth item, overlay specification is \verb/<.(+1)->/; \cn
IE从当前幻灯片往下一张,因此在问题幻灯片 2 的示例中。
举一个您可能想要使用这些偏移量的例子,假设您希望项目的第一行和第三行一起出现,然后是第二行和第四行,但您不想对幻灯片编号进行硬编码。
\begin{itemize}
\item<+-> First item % Creates overlay 1
\item<+-> Second item % Creates overlay 2
\item<.(-1)-> Third item % Appears on overlay 1
\item<.-> Fourth item % Appears on overlay 2
\end{itemize}
这只会创建 2 个覆盖,其中后面两个项目将根据它们与第二个项目的相对关系进行设置:最后一个项目已+
被使用,因此beamerpauses
被更改。
根据要求,回答问题中的具体要点:
指定的偏移量应该是负数还是正数?
- 偏移量不应包括
+
,并且仅当保持值“在范围内”时才应为负数(覆盖的绝对值应保持正数)。
- 偏移量不应包括
偏移量该如何指定?
- 偏移量应使用与 相同的语法来编写
+
,例如,,,,<.(1)->
<.(2)->
ETC。
- 偏移量应使用与 相同的语法来编写
在应用偏移量之前它是否增加了(或者可能减少了)?
- 都不是。写
<.->
就写吧<.(0)->
。
- 都不是。写
beamerpauses
应用覆盖的代码中的计数器的值是多少?- 与覆盖规范之前相同:它(可能)仅在覆盖规范的末尾递增。(参见第 5 点)。
指定之后这个计数器的值是多少?
- 如果
+
覆盖规范中存在 a,则 的值beamerpauses
将精确增加一。
- 如果