Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm writing a presentation in Beamer, where I present proofs which are longer than one frame. How to make Beamer to break it automatically to another frame? If it is not possible how am I supposed to remove the square (the end of proof) and put it in a right place in another frame?

share|improve this question
1  
Please check for the allowframebreaks option in the manual –  percusse Aug 9 '12 at 21:49
    
@percusse I don't think allowframebreaks will work when using the proof environment. –  Gonzalo Medina Aug 10 '12 at 0:00
    
@GonzaloMedina Indeed, you are right. That was a tongue-in-cheek comment as I wasn't sure if that would do it.. –  percusse Aug 10 '12 at 0:35
add comment

1 Answer

up vote 7 down vote accepted

If you are using the proof environment, then I am afraid that there's no automatic way to break the text (allowframebreaks won't work here, since we're dealing with a block).

You can define an environment that behaves as proof, but without using the end-mark; you then can use this new environment for the first frames of the proof and then, use the standard proof environment for the last frame; here's an example of the definition of such environment (which I called proofs) and its ussage:

\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}

enter image description here

As requested in a comment, I have defined now three new environments: proofs, which uses a block with title given by \insertproofname (default "Proof") and suppresses the end-mark; proofc, which suppresses both the title and the end-mark, and proofe which suppresses the title but adds the end-mark; the first environment is to be used to start the proof, the second one, to continue the proof, and the third one, to end the proof:

\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}
share|improve this answer
    
Thank you, probably the only possible solution. Would it be possible to modify it? I would prefer to have no name such as Proof (Cont.) on the second, third and so on slides..only Proof on the first slide and the square on the last slide. –  Laura Aug 10 '12 at 15:41
    
@Laura sure; I've updated my answer implementing the necessary environments. On a side note, don't forget to accept my answer if you consider it solved your problem; in case of doubt on how/why to accept answers, plese see How do you accept an answer?. –  Gonzalo Medina Aug 10 '12 at 16:41
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.