# \overprint inside \itemize problem — shaky frames

I'm having troubles with a presentation. I want to create something like this

\documentclass{beamer}
\usepackage{ulem} % To strikeout text

\begin{document}
\begin{frame}
\begin{itemize}
\onslide<1->{
\item item 1
\item item 2
\item item 3}
\begin{overprint}
\onslide*<2>{\item item 4}
\onslide<3>{\item \sout{item 4} $\to$ Actually we'll going to put here another item: item 5}
\end{overprint}
\end{itemize}
\end{frame}
\end{document}


but the frames move up and down in a strange way. Can you please help me to make the frames stay fixed?

-
Welcome to TeX.sx! No need to add thanks or sign your post. All posts will automatically include your user badge. Our preferred way of saying thanks is to upvote any good answers you may receive. –  Peter Jansson Feb 26 '13 at 22:49
Very good MWE. The question would be even better if you included in words what you want to do. Otherwise we have to guess the intent from your (nonworking) implementation. –  Matthew Leingang Feb 27 '13 at 2:36

You can make \sout overlay specification aware like this:

\documentclass{beamer}
\usepackage{ulem} % To strikeout text
\renewcommand<>{\sout}[1]{\alt#2{\beameroriginal{\sout}{#1}}{#1}}
\begin{document}
\begin{frame}
\begin{itemize}
\item<1-> item 1
\item<1-> item 2
\item<1-> item 3
\item<2-> \sout<3>{item 4} \visible<3>{$\to$ Actually we'll going to put here another item: item 5}
\end{itemize}
\end{frame}
\end{document}


Line 3 redefines \sout so that \sout<spec>{text} expands to \alt<spec>{text}{\sout{text}}. Then you need \visible instead of \only to make sure that the space taken up by the revealed text is reserved even when it's not revealed.

With incremental specifications you can write:

\begin{frame}
\begin{itemize}
\item<+-> item 1
\item<.-> item 2
\item<.-> item 3
\item<+-> \sout<+>{item 4} \visible<.>{$\to$ Actually we'll going to put here another item: item 5}
\end{itemize}
\end{frame}

-