我尝试在同一个框架中使用\pause
和\framebreak
,但不起作用。
我需要这样做的原因是,我正在多张幻灯片上写证明,但不想让所有内容同时显示在每张幻灯片上。
\framebreak
而且由于这是一个证明,我不能因为环境而只制作一个新框架而不使用\begin{proof}
。
有什么办法吗?
\edit:这是我正在谈论的代码:
\usetheme{Luebeck}
\usecolortheme{beaver}
\newenvironment{myproof}[1][\proofname]{%
\par
\def\insertproofname{#1{.}}%
\pushQED{\qed}
\alert{\textbf{
{\insertproofname}}} \hspace*{\fill} \\[5pt]}
{\popQED}
\makeatother
\frame{
\frametitle{(1) Rate function}
\begin{myproof}
\begin{itemize}
\item[(i)]
\vspace*{7pt}
By definition of $I(\cdot)$ we have
\[
text
\]
\pause
\[
...
\].
\end{itemize}
}
\frame{
\frametitle{(1) Rate function}
\begin{itemize}
\item[(ii)]
...
\pause
\vspace*{10pt}
\item[(iii)]
...
\end{itemize}
\end{myproof}
}
我开始了一个之前有过的新框架\framebreak
,但这两种方式都没有给我想要的结果。我得到的是错误。
答案1
作为丹尼尔在他的回答中提到,不可能使用框架中断和覆盖规范;但是,使用beamercolorbox
(或适当的变体,取决于所使用的主题),您可以定义一个新的环境,该环境proof
除了标题之外,其行为与环境相同,然后您可以使用这个新环境在不同的框架中(或在同一框架的不同幻灯片中)编写证明的连续部分。
下面是一个示例,展示了该Berkeley
主题的两种方法(其他主题将需要修改用于继续证明的框)。局部重新定义\qedsymbol
可以防止符号出现在第一帧/幻灯片上,然后使用\qed
您可以在证明完成后排版符号:
\documentclass{beamer}
\usetheme{Berkeley}
\usepackage{lipsum}% just to generate filler text
\setbeamercolor{proofblock}{use=block body,bg=block body.bg}
\newenvironment<>{proofc}[1]
{\begin{actionenv}#2%
\begin{beamercolorbox}[sep=1ex]{proofblock}#1%
}
{\end{beamercolorbox}\end{actionenv}}
\begin{document}
\begin{frame}
\def\qedsymbol{} % temporarily suppress the \qedsymbol
\frametitle{Proof of the main result}
\begin{proof}
\lipsum*[2]
\end{proof}
\end{frame}
\begin{frame}
\frametitle{Proof of the main result (Cont.)}
\begin{proofc}
\lipsum*[2]
\end{proofc}
\end{frame}
\begin{frame}
\frametitle{Proof of the main result (Cont.)}
\begin{proofc}
\lipsum*[4]\qed
\end{proofc}
\end{frame}
\begin{frame}
\only<1>{
\def\qedsymbol{} % temporarily suppress the \qedsymbol
\frametitle{Proof of the main result}
\begin{proof}
\lipsum*[2]
\end{proof}
}
\only<2>{
\frametitle{Proof of the main result (Cont.)}
\begin{proofc}
\lipsum*[2]
\end{proofc}
}
\only<3>{
\frametitle{Proof of the main result (Cont.)}
\begin{proofc}
\lipsum*[4]\qed
\end{proofc}
}
\end{frame}
\end{document}
一些显示结果的图像:
现在,原始问题已被编辑,解决方案更简单,因为在自定义myproof
环境中没有使用任何块:
myproof
在每一帧中开始和结束环境。\qedsymbol
针对证明尚未完成的框架进行局部重新定义。myproofc
对于那些不需要标题的框架使用环境。
使用给出的代码片段的完整示例:
\documentclass{beamer}
\usetheme{Luebeck}
\usecolortheme{beaver}
\newenvironment{myproof}[1][\proofname]{%
\par\def\insertproofname{#1{.}}%
\pushQED{\qed}\alert{\textbf{{\insertproofname}}} \hspace*{\fill} \\[5pt]}
{\popQED}
\newenvironment{myproofc}[1][\proofname]{%
\par%
\pushQED{\qed}}
{\popQED}
\begin{document}
\frame{
\def\qedsymbol{}
\frametitle{(1) Rate function}
\begin{myproof}
\begin{itemize}
\item[(i)]
\vspace*{7pt}
By definition of $I(\cdot)$ we have
\[
text
\]
\pause
\[
...
\].
\end{itemize}
\end{myproof}
}
\frame{
\frametitle{(1) Rate function}
\begin{myproofc}
\begin{itemize}
\item[(ii)]
...
\pause
\vspace*{10pt}
\item[(iii)]
...
\end{itemize}
\end{myproofc}
}
\end{document}
答案2
这不可能 :-(
第 60 页(§8.1)明确说明了这一点投影机手册在该选项的文档中allowframebreaks
:
allowframebreaks=⟨fraction⟩
。当给出此选项时,如果文本不适合一张幻灯片,框架将自动拆分为多个框架。具体来说,当给出此选项时,会发生以下情况:
- 不支持覆盖。
- ...
该\pause
命令内部使用\onslide
(参见 beamer 手册的§9.1),因此它确实采用了覆盖规范。