使用括号时套印无法与图像配合使用

使用括号时套印无法与图像配合使用

以下代码按预期工作,其中两幅图像出现在同一位置的两个不同幻灯片上:

\documentclass[aspectratio=169]{beamer}
\begin{document}

\begin{frame}[t]
  \frametitle{Test}
    \begin{overprint}
      \onslide<1>\includegraphics{pictures/test1.png}
      \onslide<2>\includegraphics{pictures/test2.png}
    \end{overprint}
\end{frame}
\end{document}

但是,如果我在命令后添加括号onslide,它就不再起作用:

\documentclass[aspectratio=169]{beamer}
\begin{document}

\begin{frame}[t]
  \frametitle{Test}
    \begin{overprint}
      \onslide<1>{\includegraphics{pictures/test1.png}}
      \onslide<2>{\includegraphics{pictures/test2.png}}
    \end{overprint}
\end{frame}
\end{document}

为什么会这样? 为了便于理解,我添加了括号,因为我希望能够在环境\onslide之外使用命令overprint。我的最终目标是:

\documentclass[aspectratio=169]{beamer}
\begin{document}

\begin{frame}[t]
  \frametitle{Test}
  \begin{itemize}
  \onslide<1> {\item Slide 1}
  \onslide<2> {\item Slide 2}
  \end{itemize}
    \begin{overprint}
      \onslide<1>{\includegraphics{pictures/test1.png}}
      \onslide<2>{\includegraphics{pictures/test2.png}}
    \end{overprint}
\end{frame}
\end{document}

除非我加上括号,否则的两个单独实例onslide似乎不起作用,但这样做会导致overprint停止工作。

答案1

\onslide如果有参数或没有参数,的行为会有所不同。引用 beamer 用户指南:

此命令的行为取决于是否给出了可选参数 ⟨text⟩(请注意,可选参数是在普通括号中给出的,而不是在方括号中)。如果存在,⟨modifier⟩ 可以是 a+ 或 a*。

[...]

如果存在 ⟨text⟩ 参数,则 \onslide(不带 ⟨modifier⟩)将映射到 \uncover,\onslide+ 将映射到 \visible,而 \onslide* 将映射到 \only。

这意味着,如果你想使用一个参数如果希望参数不占用空间,那么您应该使用\onslide*

(我个人觉得直接使用等更容易\only{}\uncover{}然后人们可以直接从名称中知道它的作用)

\documentclass[aspectratio=169]{beamer}
\begin{document}

\begin{frame}[t]
  \frametitle{Test}
  \begin{itemize}[<only@+>]
  \item Slide 1
  \item Slide 2
  \end{itemize}
    \begin{overprint}
      \onslide*<1>{\includegraphics[page=1]{example-image-duck}}
      \onslide*<2>{\includegraphics[page=2]{example-image-duck}}
    \end{overprint}
\end{frame}
\end{document}

在此处输入图片描述

相关内容