在投影机中,如何在显示后删除项目

在投影机中,如何在显示后删除项目

在投影仪框架中我有一个项目列表

\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}

\item 的动画

相关内容