次のコードは期待どおりに動作し、2 つの画像が同じ場所の 2 つの異なるスライドに表示されます。
\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}
の 2 つの個別のインスタンスは、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}