在投影仪框架中我有一个项目列表
\begin{itemize}
\item<1-> World peace
\item<2-> Peace in our neighbourhood
\end{itemize}
我怎样才能删除第二张(覆盖)幻灯片上的第一个项目?
幻灯片 1:
- 世界和平
幻灯片 2:
世界和平- 社区和平
答案1
您可以使用\only
符号和ulem
包来删除线。代码如下所示:
\documentclass{beamer}
\usepackage{ulem}
\begin{document}
\begin{frame}
\begin{itemize}
\item\only<1>{World peace}\only<2->{\sout{World peace}}
\item<2-> Peace in our neighbourhood
\end{itemize}
\end{frame}
\end{document}
更新:或者,您可以使用 Beamer 的工具来创建覆盖感知命令版本\sout
。具体操作如下:
\documentclass{beamer}
\usepackage{ulem}
\renewcommand<>{\sout}[1]{
\only#2{\beameroriginal{\sout}{#1}}
\invisible#2{#1}
}
\begin{document}
\begin{frame}
\begin{itemize}
\item\only<1>{World peace}\only<2->{\sout{World peace}}
\item<2-> Peace in our neighbourhood
\item<3-> \sout<3>{Peace struck}
\item<4-> Peace unstruck
\end{itemize}
\end{frame}
\end{document}
这基本上表明,在与覆盖说明符匹配的幻灯片上,参数\sout
应该被删除,而在与覆盖说明符不匹配的幻灯片上,参数应该正常显示。我更喜欢这种方法,因为它在幻灯片本身中更简洁。请注意,它与项目上的覆盖说明符配合得很好。也就是说,如果您要删除项目上的覆盖说明\item<3->
符和平降临在第 1 张和第 2 张幻灯片上也会显示,而不会被删除。重新定义后,原始方法仍然有效\sout
。
答案2
我知道这个话题已经过时了,但我试过 Roelof Spijker 的解决方案,它有一个小缺点。事实上,以下代码:
\documentclass{beamer}
\usepackage{ulem}
\renewcommand<>{\sout}[1]{
\only#2{\beameroriginal{\sout}{#1}}
\invisible#2{#1}
}
\begin{document}
\begin{frame}
\begin{itemize}
\item \sout<2>{World Peace} \onslide<2>{World War}
\end{itemize}
\end{frame}
\end{document}
将在幻灯片 2 上产生以下结果:
世界和平世界战争
一个大空白对应着一个看不见的“世界和平”。此外,由于这个空白,人们在处理较长的项目文本时可能会遇到问题。
我认为下面的宏更合适:
\documentclass{beamer}
\usepackage{ulem}
\renewcommand<>{\sout}[1]{\alt#2{\beameroriginal{\sout}{#1}}{#1}}
这实际上导致
幻灯片 2:
世界和平世界战争
答案3
之前的解决方案都不能让我满意,所以...这是我的:
\documentclass{beamer}
\usepackage{ulem}
\renewcommand<>{\sout}[1]{
\temporal#2{\invisible{#1}}{#1}{\beameroriginal{\sout}{#1}}
}
\begin{document}
\begin{frame}
\begin{itemize}
\item\sout<+>{World peace}
\item\sout<+>{Peace in our neighbourhood}
\item\sout<+>{Peace in my house}
\item\sout<+>{Peace in my head}
\end{itemize}
\end{frame}
\end{document}
如果你更频繁地需要这个,你可能需要定义一个新命令来替换\item
:
\documentclass{beamer}
\usepackage{ulem}
\renewcommand<>{\sout}[1]{
\temporal#2{\invisible{#1}}{#1}{\beameroriginal{\sout}{#1}}
}
\newcommand<>{\sitem}[1]{
\item\sout#2{#1}
}
\begin{document}
\begin{frame}
\begin{itemize}
\sitem<+>{World peace}
\sitem<+>{Peace in our neighbourhood}
\sitem<+>{Peace in my house}
\sitem<2,4>{Peace in my head}
\item<+->{Peace in my head}
\item<+> Another point
\item<+> Another another point
\end{itemize}
\end{frame}
\end{document}