10

When I do an list (or list-type) in beamer with the automatic pausing between each item, then there seems to be something wrong with the pauses afterwards. If I put in a \pause afterwards then I get a double pause, but if I leave it out then I get no pause.

Here's an example:

\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item On the first slide
\end{itemize}
\pause
On the first or third slide
\end{frame}
\end{document}

With the \pause, I get three pages. Without, I get only one. I want two.

Another example (added in edit) of similarly annoying behaviour is in trying to pause within an item:

\documentclass{beamer}
\begin{document}
\begin{frame}
On the first slide
\pause
\begin{itemize}[<+->]
\item On the second slide.
\pause
Should be on the third slide, actually on the fourth
\item On the fourth slide
\end{itemize}
\end{frame}
\end{document}

What's going on? More importantly, how do I stop it doing that? It's really annoying!

(Added in edit): In response to Michael Underwood's answer: the \pause command is so useful and so intuitive that I'd really like to use it. I know that for complicated stuff, I need to use more refined commands, but this doesn't feel complicated. It seems that as soon as I use an automatic list (which is itself a useful shortcut to a more complicated command) then I have to abandon using the \pause command. Why can't I use both?

I'm using beamer version 3.07 from TeXLive 2008. I'm quite happy to upgrade if it will get rid of the problem.

2
  • I think the issue is that the pause command is too simple to deal with the subtleties of where you want to pauses to be. \uncover is almost as intuitive, and much more flexible. I'd say give up pause.
    – Seamus
    Commented Aug 2, 2010 at 11:18
  • @Seamus: Shan't! Maybe I'm just being stubborn, but I don't think that this is a particularly subtle case; and I'd be surprised to find myself alone in finding that I dislike anything that requires me to wrap large amounts of text as arguments to a command. Also, whilst \uncover may be more flexible in terms of what it can do, \pause is more flexible when actually writing the presentation (ie the content of the presentation). It's much more natural to think "I want this list to appear one at a time, then pause, then say this" than faffing around with \uncover. Commented Aug 2, 2010 at 12:14

3 Answers 3

5

Without the \pause command, "On the first or third slide" has no specification for when to appear, which means it always appears. With the \pause command, it uncovers the list items one at a time until they are all uncovered, and then pauses again, which is why you have the repeat slide (since nothing changes between uncovering the last item and pausing).

The solution is to specify when you want the items after the list to appear. One method of accomplishing this is to surround it with an \uncover command:

\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item On the first slide
\end{itemize}
\uncover<+->{
On the second slide
}
\end{frame}
\end{document}

Edit

In response to your edit, here's another way to solve your problem. You are using \pause in combination with the list option [<+->], which adds its own pauses and so results in double pauses sometimes. If you really prefer to not give up \pause, then you can fix your example's behaviour by using it exclusively:

\documentclass{beamer}
\begin{document}
\begin{frame}
On the first slide
\pause
\begin{itemize}
  \item On the second slide.
    \pause On the third slide
  \pause\item On the fourth slide
\end{itemize}
\end{frame}
\end{document}

This also works in your first example:

\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{itemize}
  \item On the first slide
  \pause\item On the second slide
\end{itemize}
\pause On the third slide
\end{frame}
\end{document}

The potential down side of this approach is that \pause stops everything after it on the current frame from appearing until the pause has passed, even if you specify that it should appear earlier. For example,

\documentclass{beamer}
\begin{document}
    \begin{frame}
        Here are important points:
        \begin{itemize}
            \item Point on Slide 1
            \pause\item Point on Slide 2
            \pause\item Point on Slide 3
        \end{itemize}
        \uncover<1-3>{
            I want to emphasize this on every slide:\\ Always remember these points!\\ (But it only appears on the third slide)
        }
    \end{frame}
\end{document}

On the other hand, with less code you can achieve this effect simply:

\documentclass{beamer}
\begin{document}
\begin{frame}
Here are important points:
\begin{itemize}[<+->]
  \item Point on Slide 1
  \item Point on Slide 2
  \item Point on Slide 3
\end{itemize}
Always remember these points!
\end{frame}
\end{document}
1
  • Although that would work, I'm reluctant to give up the \pause command! I've added some more detail to my question to try to refine it. Commented Aug 2, 2010 at 8:38
3

The solution I ended up with was to define two refinements of the \pause command, one for inside a list and one for just after, which made the pauses work as I expected them to. They adjust beamerpauses accordingly.

The definitions are:

% For after a list
\newcommand{\itpause}{%
\addtocounter{beamerpauses}{-1}%
\pause
}

% For within a list
\newcommand{\iitpause}{%
\addtocounter{beamerpauses}{-1}%
\pause
\addtocounter{beamerpauses}{1}%
}

Use as:

\documentclass{beamer}
%\url{https://tex.stackexchange.com/q/682/86}
% For after a list
\newcommand{\itpause}{%
\addtocounter{beamerpauses}{-1}%
\pause
}

% For within a list
\newcommand{\iitpause}{%
\addtocounter{beamerpauses}{-1}%
\pause
\addtocounter{beamerpauses}{1}%
}

\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item First slide
\iitpause Second slide
\item Third slide
\end{itemize}
\itpause
Fourth slide
\end{frame}
\end{document}
2

Personal opinion: I don't like default overlay specifications, with \item<+-> and similar one is much more flexible and if all else fails‎ one can still use hardcoded values like \item<3->

With overlay specification like [<.->] you can use \pause as usual after the itemization. However if you would like to have a pause before the itemization, a \pause has to be added there.

\documentclass{beamer}
\begin{document}
\begin{frame}
text
\pause
\begin{itemize}[<.->]
\item On the first slide
\end{itemize}
\pause
On the first or third slide
\end{frame}
\end{document}

For the intra-item pause:

\documentclass{beamer}
\begin{document}
\begin{frame}
On the first slide
\pause
\begin{itemize}[<.->]
\item On the second slide.
\pause
Should be on the third slide, actually on the fourth
\pause
\item On the fourth slide
\end{itemize}
\end{frame}
\end{document}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .