Beamer:暂时禁用一帧内的覆盖

Beamer:暂时禁用一帧内的覆盖

假设我有以下内容

\documentclass{beamer}

\newcommand*{\something}{
  \onslide<+-> this \onslide<+-> that
}

\newcommand*{\morething}{
  \onslide<+-> more
}

\begin{document}

\begin{frame}
  \something

  \morething
\end{frame}
\end{document}

这将生成一堆幻灯片,其中thisthatmore连续出现。我想创建一个新的命令或环境来暂时禁用动画。让我将假设的命令称为\disableanim。然后,以下代码将生成幻灯片,其中thisthat只是同时出现(即没有动画),但 中的动画\morething仍然保留。理想情况下,\disableanim应该对其他叠加感知命令也有效。

\documentclass{beamer}

\newcommand*{\disableanim}{???}

\newcommand*{\something}{
  \onslide<+-> this \onslide<+-> that
}

\newcommand*{\morething}{
  \onslide<+-> more
}

\begin{document}

\begin{frame}
  \disableanim{\something}

  \morething
\end{frame}
\end{document}

谢谢你!

答案1

您可以暂时\onslide<.>用以下无操作来替换:

\newcommand*{\disableanim}[1]{{%
  \RenewDocumentCommand{\onslide}{ R<>{} }{}%
  #1%
}}

请注意宏中的附加分组{...}限制了重新定义的范围。也可以插入其他覆盖感知命令的类似重新定义。

相关内容