Beamer 中的证明

Beamer 中的证明

我正在用 Beamer 写一个演示文稿,其中我展示的证明长度超过一帧。如何让 Beamer 自动将其拆分到另一帧?如果不可能,我该如何删除方块(证明的结尾)并将其放在另一帧的正确位置?

答案1

如果您正在使用该proof环境,那么恐怕没有自动的方法来打破文本(allowframebreaks在这里不起作用,因为我们正在处理一个块)。

您可以定义一个行为方式为 的环境proof,但不使用结束标记;然后,您可以将这个新环境用于证明的前几帧,然后将标准proof环境用于最后一帧;下面是此类环境的定义(我称之为proofs)及其用法的一个例子:

\documentclass{beamer}
\usetheme{Warsaw}
\usepackage{lipsum}

\makeatletter
\newenvironment<>{proofs}[1][\proofname]{%
    \par
    \def\insertproofname{#1\@addpunct{.}}%
    \usebeamertemplate{proof begin}#2}
  {\usebeamertemplate{proof end}}
\makeatother

\begin{document}

\begin{frame}
\begin{proofs}
\lipsum[1]
\end{proofs}
\end{frame}

\begin{frame}
\begin{proofs}[\proofname\ (Cont.)]
\lipsum[1]
\end{proofs}
\end{frame}

\begin{frame}
\begin{proof}[\proofname\ (Cont.)]
\lipsum[1]
\end{proof}
\end{frame}

\end{document}

在此处输入图片描述

根据评论中的要求,我现在定义了三个新环境:proofs,它使用一个标题为\insertproofname(默认“证明”)的块并抑制结束标记;proofc,它抑制标题和结束标记,以及proofe抑制标题但添加结束标记;第一个环境用于开始证明,第二个环境用于继续证明,第三个环境用于结束证明:

\documentclass{beamer}
\usetheme{Warsaw}
\usepackage{lipsum}

\makeatletter
\newenvironment<>{proofs}[1][\proofname]{%
    \par
    \def\insertproofname{#1\@addpunct{.}}%
    \usebeamertemplate{proof begin}#2}
  {\usebeamertemplate{proof end}}
\newenvironment<>{proofc}{%
  \setbeamertemplate{proof begin}{\begin{block}{}}
    \par
    \usebeamertemplate{proof begin}}
  {\usebeamertemplate{proof end}}
\newenvironment<>{proofe}{%
    \par
    \pushQED{\qed}
    \setbeamertemplate{proof begin}{\begin{block}{}}
    \usebeamertemplate{proof begin}}
  {\popQED\usebeamertemplate{proof end}}
\makeatother

\begin{document}

\begin{frame}
\begin{proofs}
\lipsum[1]
\end{proofs}
\end{frame}

\begin{frame}
\begin{proofc}
\lipsum[1]
\end{proofc}
\end{frame}

\begin{frame}
\begin{proofe}
\lipsum[1]
\end{proofe}
\end{frame}

\end{document}

答案2

解决这个问题的一个选择是“蛮力”:因为存在通用的堵塞对于 beamer 类的环境,我们可以做以下事情:

    \begin{frame}

    \begin{block}{Proof}
    Here is the first part of my proof.
    \end{block}

    \end{frame}

    \begin{frame}

    \begin{block}{}
    This is where my proof continues, and ends.
    \qed
    \end{block}

    \end{frame}

在第二个空的“{}”中,我们可以插入任何我们想要的块作为标题的内容,或者如果我们不想在那里添加任何内容,则可以将其留空。

答案3

这个allowframebreaks选项是邪恶的,但仅作为概念证明,这里有一个具有tcolorbox内部主题的解决方案:

\documentclass{beamer}
\usetheme{Warsaw}
\usepackage{lipsum}

\usepackage[most]{tcolorbox}
\useinnertheme{tcolorbox}
\tcbset{breakable,title after break=\insertblocktitle}

\begin{document}

\begin{frame}[allowframebreaks]
\begin{proof}
\lipsum[1]
\framebreak
\lipsum[1]
\end{proof}
\end{frame}

\end{document}

在此处输入图片描述

相关内容