[Tex/LaTex] Beamer: uncover, overlay, pause not working

beameroverlays

I am trying to do a Beamer presentation with some uncover features, but it turns out that uncover, overlay and pause are not working. Just the only command works.

If I compile the following example, just the only command will produce different output slides, the other commands produce 3 slides with exactly the same content: all the text, not uncovered at all.

\documentclass{beamer}

\begin{document}
\begin{frame}
\frametitle{onslide}
\begin{overprint}
\onslide<+->{\begin{block}{block 1}
   block 1
\end{block}}
\onslide<+->{\begin{block}{block 2}
   block 2 
\end{block}}
\onslide<+->{\begin{block}{block 3}
   block 3
 \end{block}}
 \end{overprint}
 \end{frame}

 \begin{frame}
 \frametitle{only}
 \only<1>{\begin{block}{block 1}
   block 1
 \end{block}}
 \only<2>{\begin{block}{block 2}
   block 2
 \end{block}}
 \only<3>{\begin{block}{block 3}
   block 3
 \end{block}}
 \end{frame}

 \begin{frame}
 \frametitle{pause}
 \begin{block}{block 1}
   block 1
 \end{block}\pause
 \begin{block}{block 2}
   block 2
 \end{block}\pause
 \begin{block}{block 3}
   block 3
 \end{block}
 \end{frame}

 \begin{frame}
 \frametitle{uncover}

  \uncover<+->{\begin{block}{block 1}
   block 1
 \end{block}}
 \uncover<+->{\begin{block}{block 2}
   block 2
 \end{block}}
 \uncover<+->{\begin{block}{block 3}
   block 3
 \end{block}}

 \end{frame}
 \end{document}

Do you know what I am doing wrong? Can it be my Beamer version?

Best Answer

Here is a brief description of the different commands you tried to use:

Only

This is used either \only<x>{}, \only<x-z>{} or \only<x,y>{} and will output what is between {} only on the slide(s) (resp.) x, x to z or x and y. It does not allocate some sort of space for what is between the {} on the other slide so that

 \begin{frame}{only}

 \only<1>{\begin{block}{block 1}
   block 1
 \end{block}}
 \only<2>{\begin{block}{block 2}
   block 2
 \end{block}}
 \only<3>{\begin{block}{block 3}
   block 3
 \end{block}}
 \end{frame}

produces:

Output Only

Pause

\pause is a command used to add a pause to the frame you are building. It means that everything that is placed before the pause will be displayed on the first slide corresponding to the frame and everything that follows (but before the next \pause command if you use more than one on the same frame) will be displayed on the next slide corresponding to the frame.

It can be seen as if you were saying to Beamer, here I want you to stop the slide and wait for me to press a key before you output the following on the next slide without removing what is before.

This feature is very useful when unrevealing items from a list if you need to add some comment about the items and you don't want the audience to see the next items while you are dealing with the previous one.

Here is your code:

 \begin{frame}{pause}

 \begin{block}{block 1}
   block 1
 \end{block}
\pause
 \begin{block}{block 2}
   block 2
 \end{block}
\pause
 \begin{block}{block 3}
   block 3
 \end{block}
 \end{frame}

and its output:

Output pause

Uncover

This command can be used either like \uncover<x->{}, \uncover<x-z>{} or \uncover<x>{} and will output what is between the {} from the (resp.) x to the end slides, the x to z slides, only on the x slide.

On the illustration below you can see that even if the part between the {} is hidden, some space is allocated to it and will not be used to display something else (to compare with the only command)

Here is an example

 \begin{frame}{uncover}

  \uncover<1->{\begin{block}{block 1}
   block 1
 \end{block}}
 \uncover<2>{\begin{block}{block 2}
   block 2
 \end{block}}
 \uncover<3>{\begin{block}{block 3}
   block 3
 \end{block}}

and its output:

Output uncover

General comments

It exists a lot of other ways to reveal, overwrite, overlay and so on. parts of slides using Beamer. This is just simple explanations using the most common ones. One should add to these list the \item<x> and other derivatives from this one used to reveal sequentially the items of a list (more or less the same goal as pause but with more control if you to remove something which has been displayed).

I hope this helps for your purpose and I think you are looking for the \only command according to the description you made in your question. If not please clarify it.