Следующий код работает так, как и ожидалось, при этом два изображения отображаются на двух разных слайдах в одном и том же месте:
\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
отличается, если есть аргумент или нет. Цитата из руководства пользователя проектора:
Поведение этой команды зависит от того, указан ли необязательный аргумент ⟨текст⟩ или нет (обратите внимание, что необязательный аргумент указан в обычных фигурных скобках, а не в квадратных). Если он присутствует, ⟨модификатор⟩ может быть либо a+, либо a*.
[...]
Если присутствует аргумент ⟨text⟩, \onslide (без ⟨модификатора⟩) сопоставляется с \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}