Существует ли эквивалент «onlyenv», который резервирует место для скрытого контента?

Существует ли эквивалент «onlyenv», который резервирует место для скрытого контента?

Мой код:

\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}

Связанный контент