以下beamer
MWE 由 5 张幻灯片组成。我使用嵌套overprint
环境来实现没有抖动间距的叠加效果。在第 2 张和第 3 张幻灯片上,应该出现文本“two and three”,在第 3 张幻灯片上应该出现一个额外的“three”。第 4 张和第 5 张幻灯片也是如此。
但是,第二个嵌套overlay
环境似乎破坏了第一个\onslide
;它只是没有出现。overprint
第一个嵌套中的单个嵌套\onslide
工作正常(注释第二个嵌套套印以查看此内容)。
是overprint
不是设计时没有嵌套(我在文档中没有找到任何关于这方面的内容)或者这是一个错误?我怎样才能在不重复代码的情况下解决这个问题?
\documentclass{beamer}
\begin{document}
\begin{frame}
Always
\begin{overprint}
\onslide<2-3>
two and three
\begin{overprint}
\onslide<3>
three
\end{overprint}
\onslide<4-5>
four and five
\begin{overprint}
\onslide<5>
five
\end{overprint}
\end{overprint}
Always
\end{frame}
\end{document}
答案1
如果我理解正确的话,使用大括号应该可以解决你的问题:
\documentclass{beamer}
\begin{document}
\begin{frame}
Always
\begin{overprint}
\onslide<2-3>{
two and three}
\begin{overprint}
\onslide<3>{
three}
\end{overprint}
\onslide<4-5>{
four and five}
\begin{overprint}
\onslide<5>{
five}
\end{overprint}
\end{overprint}
\end{frame}
\end{document}
编辑
使用文本位置包(绝对定位)
\documentclass{beamer}
\usepackage[absolute,overlay
%,showboxes
]{textpos}
\TPGrid{3}{5}
\begin{document}
\begin{frame}
\begin{textblock}{1}(0.5,2)
Always
\onslide<2-3>{two and three}
\onslide<3>{three}
\end{textblock}
\begin{textblock}{1}(0.5,2)
\invisible{Always}
\onslide<4-5>{four and five}
\onslide<5>{five}
Always
\end{textblock}
\end{frame}
\end{document}
答案2
对覆盖规格进行一些调整后:
\documentclass{beamer}
\begin{document}
\begin{frame}
Always
\begin{overprint}
\only<1-3>{
\onslide<2-3>{two and three
\begin{overprint}
\onslide<3>{
three}
\end{overprint}
}
}
\only<4-5>{
four and five
\begin{overprint}
\onslide<5>{
five}
\end{overprint}
}
\end{overprint}
\end{frame}
\end{document}
编辑:修正了额外的垂直空格。这可能是由于默认插入了换行符。添加适当的%
行尾即可获得预期结果。
\documentclass{beamer}
\begin{document}
\begin{frame}
Always
\begin{overprint}
\only<1-3>{%
\onslide<2-3>{two and three
\begin{overprint}
\onslide<3>{three}%
\end{overprint}%
}%
}%
\only<4-5>{%
four and five
\begin{overprint}
\onslide<5>{five}%
\end{overprint}%
}%
\end{overprint}%
Always
\end{frame}
\end{document}