9

I have some fairly complex slides where I'd like to have an intermediate slide on the handout. (In order that I can have separate \note pages for two parts of the slide. Here's an MWE showing what the problem is:

\documentclass[handout]{beamer}

\begin{document}
\begin{frame}<1>[label=foo]
foo\pause bar
\end{frame}
\end{document}

Handout mode is printing "foobar" since it is ignoring the overlay specifications. This is normally fine, but I'd like a way to explicitly say "Hey, handout mode, this time, I really do mean just print slide 1 of this frame! Replacing <1> with <1|handout:1> doesn't work. Any advice?

In the real test case, there's some againframe trickery to talk through half the slide, move onto a little tangent, then back for the second half of the first slide. I'd like to have a "halfway" slide on the handout so that it can be followed by my notes relating to what I should have said by that point (just before the tangent).


Edit: Note that this doesn't seem to depend on how the slides are incremented. That is, it isn't due to any weird behaviour of \pause. \onslide<2> and \onslide<+> both produce the same behaviour.

  • Do you know what happened to PhilTeX? – cfr Jun 13 '14 at 0:23
  • I just found tex.stackexchange.com/a/6592/39222 and tex.stackexchange.com/a/97210/39222 which might also be of interest. Is this a duplicate of one of those questions? – cfr Jun 13 '14 at 0:29
  • @cfr The answers to those questions don't work for the current problem, while Daniel's solution here does seem to (still testing it). So, no. This isn't a duplicate of those questions, although they are related. – Seamus Jun 13 '14 at 9:03
  • @cfr I don't know if this is the place to talk about it, but PhilTeX is kind of in hiatus. Charlie left academia, and myself and Mark are both too busy to "reboot" the site. The content should still be available... – Seamus Jun 13 '14 at 9:04
  • Do you know where it is available? – cfr Jun 13 '14 at 20:53
8
+250

The following works:

\documentclass[handout]{beamer}

\begin{document}
\begin{frame}<handout:1>[label=foo]
  foo\onslide<all:2>bar
\end{frame}
\end{document}

The point is that you have two levels of overlay specifications:

  • Local overlay specs that influence the content of a frame, given by \pause, \only, overlay-aware commands and so on. These define the set of slides a frame consists of.

  • The global overlay spec you can give to the frame environment or command. This further filters the set of slides defined by the local ones.

However, in handout mode, beamer basically collapses all local overlay specifications to a single slide (unless explicitly told so by local handout: or all: alternatives, as in the code above). Hence, the filter on "global level" does not have any effect – it can only reduce the set of slides, not extend it.

A possible workaround is what I have sketched above: During development, use <all:...> overlay specs to have each and every slide also in the handout. When the lecture is almost complete, add the global ones to decide what actually should be part of the handout. I have been using this strategy for a while and it works quite well.

  • Your second point is not really correct. The global overlay specification can increase the number of slides shown in the case of a mode whose default is to collapse them into one. In the case of the standard mode, the global specification is <1-> by default so no alternative can increase the number of slides shown. In the case of handout mode, though, the default is different and an alternative can increase the number of slides shown in this case. By default the global filter collapses the local ones to one, but this can be overridden. See my answer for some examples. – cfr Jun 13 '14 at 0:15
  • @cfr: Sorry, I don't see your point. Also in your answer I find only cases where you increase handout: first locally than globally (as I do with all:, which implies handout:). Am I missing something? – Daniel Jun 13 '14 at 8:49
  • All I meant was that because the default is to show all slides in ordinary mode, the global spec can only decrease the number of slides shown since you cannot show more than all of them. But in handout mode, they are all collapsed by default so specifying something else here can mean showing more slides. I didn't mean to suggest that you don't need the local stuff in order for this to have any point. I just found it slightly misleading. – cfr Jun 15 '14 at 20:26
4

I'm not sure how to do this with \pause but it works with \onslide and overlay sensitive environments such as itemize, as well as overlay-sensitised tikz styles.

Case 1: Without \againframe

This case is pretty straightforward:

\documentclass[handout]{beamer}

\begin{document}
  \begin{frame}<1-| handout:1->[label=foo]
    foo\onslide<2-| handout:2> bar
  \end{frame}
\end{document}

Handout with 2 slides on a frame

Case 2: With \againframe

This makes use of \againframe which you mentioned you are already using in the real file. I'm not certain quite how well this will fit into your existing code.

I use this when I want a handout to contain stage 1 of a diagram, say, then something else, then stage 2 of the diagram etc. Often the slides themselves contain stages 1a, 1b, 1c etc. and 2a, 2b, 2c etc. This method can be extended to work in those cases as the simple example of a list shows in the following:

\documentclass[handout]{beamer}
\mode<handout>{% comment this out for the second form of the handout shown below
  \usepackage{pgfpages}
  \pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm,landscape]
  \setbeamercolor{background canvas}{bg=black!5}
}

\begin{document}
  \begin{frame}<1| handout:1>[label=foo]
    foo\onslide<2-| handout:2> bar
  \end{frame}
  \begin{frame}<1-2| handout:1>[label=foo2]
    \begin{itemize}
      \item<+-| handout:1-2> foo on slides 1-4 of slides and 1-2 of handout
      \item<+-| handout:1-2> foo on slides 2-4 of slides and 1-2 of handout
      \item<+-| handout:2> bar on slides 3-4 of slides and slide 2 of handout
      \item<+-| handout:2> bar on slide 4 of slides and slide 2 of handout
    \end{itemize}
  \end{frame}
  \againframe<2| handout:2>{foo}
  \againframe<3-4| handout:2>{foo2}
\end{document}

The handout will then look like this (using the pgfpages layout above):

Handout

Or without the pgfpages layout:

Handout as slides

The slides themselves will look like this:

Slides

  • I have replaced you overlay illustrations by (IMHO more accessible) animated versions (see tex.stackexchange.com/questions/23727/… on how to do this). Hope you don't mind, otherwise just revert the edit. – Daniel Jun 13 '14 at 9:03
  • @Daniel I'm not wild about animations on web pages. I find them distracting. I learnt to create them and then realised that I found them extremely annoying. Why do you think they are 'more accessible'? I can't honestly see how either is any better in terms of accessibility and the animations don't let people choose their own pace. – cfr Jun 13 '14 at 21:05
  • I wholeheartedly agree in general – with the one exception of visualizing beamer animations. I found animations to be more accessible in this case as (a) they visualize, how things look on screen in presentation mode (e.g, "jumping" content is immediately detectable) and (b) they give one the chance to see the code and its result on the same screen without having to scroll up and down for ages. But if you don't like it, just revert the edit :-) – Daniel Jun 14 '14 at 7:09
3

I came to this but the answer did not work for me, because I am using \only<>. The solution is then a command like \only<3| handout:2>{Some text} found p14 of beamer user guide. So if my frame is

Before
\only<1| handout:1>{text1}
\only<2| handout:2>{text2}
After

then text1 is simply replaced by text2 in the two slides generated even in handout.

  • Welcome to TeX.Stackexchange! – user36296 Feb 8 '17 at 22:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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