我在做演示时遇到了麻烦。我想创建类似这样的内容
\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}
但框架会以奇怪的方式上下移动。你能帮我让框架保持固定吗?
答案1
您可以\sout
像这样让覆盖规范感知:
\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}
第 3 行重新定义\sout
,使\sout<spec>{text}
扩展为\alt<spec>{text}{\sout{text}}
。然后你需要\visible
而不是\only
来确保即使没有显示文本,所显示文本所占用的空间也会被保留。
使用增量规范你可以编写:
\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}