Here's a more beamer
way to do things.
The idea is to make an "action" environment that changes the bullet colour.
\documentclass{beamer}
\useinnertheme{circles}
\newenvironment{proenv}{\only{\setbeamercolor{local structure}{fg=green}}}{}
\newenvironment{conenv}{\only{\setbeamercolor{local structure}{fg=red}}}{}
\begin{document}
\begin{frame}
\frametitle{Some pros and cons}
\begin{itemize}
\item<pro@1-> A pro item
\item<con@1-> A con item
\item A neutral item
\end{itemize}
\end{frame}
\end{document}
The syntax of adding the action requires you to specify the slide range that the action will apply to; you should set this to 1-
(which means slide 1 and all further slides) otherwise the colour will change back to the default colour theme if you are uncovering any parts of the slide.
The issue here is the fact that \pause
has global scope within the frame. Putting a \pause
somewhere on a slide says "Nothing after this appears on earlier slides.". This cannot be overridden. So all of your \includegraphics
commands are wrapped in a "Don't show until after the slide with \pause
is visible.". So you need to limit the scope of the \pause
.
One way is to explicitly tell beamer
which slide each item
should appear on by writing something like \item<3->
. Another is to exploit the behaviour of beamer
when it encounters the <+->
syntax. The advantage of this second way is that it is robust under changing the order of the list, or inserting or removing items. The important thing to know is that when beamer sees a +
sign in an overlay specification, such as <+->
, then it increments its internal counter which keeps track of what slide stuff should appear on. So each \item<+->
says, "Display this from the next slide onwards." (note that the optional argument to the itemize
environment is simply a shortcut way of saying \item<+->
each time). The trick, therefore, is to tell beamer
to increment the counter at the time you want the extra pause. The item three, then four
will be displayed from overlay 3 onwards, but the item five
will wait an extra turn before it is displayed.
There are various ways of achieving this goal. The most direct is simply to write \stepcounter{beamerpauses}
. The most indirect is to ensure that beamer
sees an extra +
somewhere. Indeed, this could be one for an obfuscation competition! Putting \onslide<+>{}
or \alert<+>{}
or \invisible<+>{}
, or indeed any overlay-aware command somewhere on that line will do the trick. I think that my personal favourite would be to write
\visible<-+,+->{Three, then four}
(Note that as the two +
s occur in the same overlay specification, the counter is only updated once.) But the \stepcounter
is probably the clearest, and the easiest to remember why you put it there in six months' time.
\documentclass{beamer}
\begin{document}
\begin{frame}
\frametitle{Title}
\begin{columns}
\column{.4\textwidth}
\begin{minipage}[c][.6\textheight][c]{\linewidth}
\begin{itemize}[<+->]
\item
One
\item
Two
\item
Three, then four
\stepcounter{beamerpauses}
\item
Five
\end{itemize}
\end{minipage}
\column{.6\textwidth}
\center
\includegraphics<1>{fig_1}
\includegraphics<2>{fig_2}
\includegraphics<3>{fig_3}
\includegraphics<4>{fig_4}
\includegraphics<5>{fig_5}
\end{columns}
\end{frame}
\end{document}
Best Answer
How about
MWE