我的代码:
\documentclass{beamer}
\begin{document}
\begin{frame}[fragile]
% Slide 1
\begin{onlyenv}<1->
\begin{verbatim}
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
\end{verbatim}
\end{onlyenv}
% Slide 1 + Slide 2
\begin{onlyenv}<2>
\begin{verbatim}
$ cc hello.c
\end{verbatim}
\end{onlyenv}
% Slide 1 + Slide 3
\begin{onlyenv}<3>
\begin{verbatim}
$ cc hello.c
$ ./a.out
\end{verbatim}
\end{onlyenv}
% Slide 1 + Slide 4
\begin{onlyenv}<4>
\begin{verbatim}
$ cc hello.c
$ ./a.out
hello, world
\end{verbatim}
\end{onlyenv}
\end{frame}
\end{document}
这段代码的问题在于,随着代码的显示,内容会因为内容高度的变化而不断跳动。是否有一个等效的环境onlyenv
可以为将来的幻灯片显示的内容保留空间。
我想我要问的是:该\only
命令没有为隐藏内容保留空间,并且它有一个名为的等效环境\onlyenv
。另一方面,\onslide
为隐藏内容保留空间,我正在尝试为其找到一个等效环境。
答案1
可以使用overprint
环境来实现这一点。在此环境中,\onslide
命令充当\item
。
我引用了 beamer 手册(9.6.1 使命令和环境覆盖规范感知)
\begin{overprint}[area width] environment contents \end{overprint}
区域宽度默认为文本宽度。在环境中,使用 \幻灯片命令指定应在不同的幻灯片上显示此环境的不同内容。\幻灯片命令的使用方式如下\物品命令。环境中的所有内容都将放置在指定宽度的矩形区域中。区域的高度和深度选择得足够大,以容纳区域的最大内容。\幻灯片命令必须不相交。这对于讲义来说可能是一个问题,因为在那里,所有覆盖规范都默认为1. 如果您使用选项讲义,您可以禁用除一个之外的所有\幻灯片将其他设置为0。
\documentclass{beamer}
\begin{document}
\begin{frame}[fragile]
% Slide 1
\begin{overprint}
\onslide<1->
\begin{verbatim}
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
\end{verbatim}
\end{overprint}
% Slide 1 + Slide 2
\begin{overprint}
\onslide<2->
\begin{verbatim}
$ cc hello.c
\end{verbatim}
\end{overprint}
% Slide 1 + Slide 3
\begin{overprint}
\onslide<3->
\begin{verbatim}
$ ./a.out
\end{verbatim}
\end{overprint}
% Slide 1 + Slide 4
\begin{overprint}
\onslide<4->
\begin{verbatim}
hello, world
\end{verbatim}
\end{overprint}
\end{frame}
\end{document}