同一帧中的 \pause 和 \framebreak

同一帧中的 \pause 和 \framebreak

我尝试在同一个框架中使用\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环境中没有使用任何块:

  1. myproof在每一帧中开始和结束环境。

  2. \qedsymbol针对证明尚未完成的框架进行局部重新定义。

  3. 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⟩。当给出此选项时,如果文本不适合一张幻灯片,框架将自动拆分为多个框架。具体来说,当给出此选项时,会发生以下情况:
    1. 不支持覆盖。
    2. ...

\pause命令内部使用\onslide(参见 beamer 手册的§9.1),因此它确实采用了覆盖规范。

相关内容