Мой код:
\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
.
Я цитирую руководство по проектору(9.6.1 Создание команд и оверлеев сред с учетом спецификации)
\begin{overprint}[area width] environment contents \end{overprint}
Ширина области по умолчанию равна ширине текста. Внутри среды используйте \onслайдкоманды для указания различных вещей, которые должны быть показаны для этой среды на разных слайдах.\onслайдкоманды используются как\элементКоманды. Все в среде будет размещено в прямоугольной области указанной ширины. Высота и глубина области выбираются достаточно большими, чтобы вместить самое большое содержимое области. Характеристики наложения\onслайдКоманды должны быть непересекающимися. Это может быть проблемой для раздаточных материалов, так как там все спецификации наложения по умолчанию1. Если вы используете опциюРекламный проспект, вы можете отключить все, кроме одного\onслайдустановив другие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}