以下程式碼按預期工作,其中兩個圖像出現在同一位置的兩張不同幻燈片上:
\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
。我的MWE最終目標是:
\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
無論是否存在爭論,行為都會有所不同。引用投影機使用者指南:
此命令的行為取決於是否給出可選參數 ⟨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}