Область действия или переопределение \пауза?

Область действия или переопределение \пауза?

У меня есть несколько слайдов с лекционными задачами из нескольких частей. Я бы хотел, чтобы студенты могли увидеть всю задачу в целом, а затем заполнить ответы шаг за шагом. Это осуществимо, если только заполняемый материал можно разделить на небольшие удобные части:

\documentclass{beamer}
\begin{document}

\begin{frame}\onslide<+->{}
This problem has three parts.
  \begin{enumerate}
    \item What is the answer to part 1?\\
      \onslide<+->{First interpret the question.}\onslide<+->{ Then do some work.}\onslide<+->{ Now we can answer the question, and the answer is} \onslide<+->{ 42.}
    \item What is the answer to part 2?\\
      \onslide<+->{This problem is easy, and the answer is }\onslide<+->{0.}
    \item What is the answer to part 3?\\
      \onslide<+->{You'll have to figure this one out for yourself.}
  \end{enumerate}
\end{frame}
\end{document}

Это решение довольно элегантно (за исключением начальной части \onslide<+->для увеличения счетчика). К сожалению, оно ломается (или, по крайней мере, становится очень грязным), если я хочу сделать паузу в середине окружения, например, выравнивание:

\documentclass{beamer}
\usepackage{amsmath}
\begin{document}
%% Standard (?) fix to make \pause work at all in align environment
\mode<presentation>{\setbeamercovered{transparent=0}}
\makeatletter
\def\beamerorig@set@color{%
  \pdfliteral{\current@color}%
  \aftergroup\reset@color
}
\def\beamerorig@reset@color{\pdfliteral{\current@color}}
\makeatother
%%

\begin{frame}
This problem has three parts.
  \begin{enumerate}
    \item What is the answer to part 1?\\\pause
      First interpret the question. Then calculate
      \begin{align*}
        \Pr[X\in A] &=\pause \frac{1}{2^n} \sum_{i=0}^n \binom{n}{i} \\ 
        &=\pause 1
      \end{align*}
    \item What is the answer to part 2?\\\pause
      More answers, \pause with more parts.
    \item What is the answer to part 3?\\\pause
      ...
  \end{enumerate}
\end{frame}
\end{document}

Конечно, если я сделаю это таким образом, то последующие части задачи не появятся, пока мы не закончим первую часть.

Я, вероятно, мог бы заставить первый подход работать, разбив ответ на еще более мелкие части, а затем гарантируя, что текст до и первая часть будут отображаться alignодновременно, но это, похоже, потребует много ручной работы в каждом конкретном случае. Я думаю, что правильным решением было бы либо ограничить эффект \pauseнекоторой областью действия в самом ответе, либо переопределить его, принудительно сделав непрозрачным более поздний материал, который я хочу видеть в начале (я считаю, что исправление для alignуже делает так, что текст всегда там, просто прозрачный).

Есть ли хороший способ сделать это?

решение1

В итоге я применил следующий обходной путь, используя (правда, весьма хакерскую) \alwaysкоманду, которая сбрасывает счетчик слайдов для его содержимого:

\documentclass{beamer}
\usepackage{amsmath}
%% Standard (?) fix to make \pause work at all in align environment
\mode<presentation>{\setbeamercovered{transparent=0}}
\makeatletter
\def\beamerorig@set@color{%
  \pdfliteral{\current@color}%
  \aftergroup\reset@color
}
\def\beamerorig@reset@color{\pdfliteral{\current@color}}
\makeatother
%%

%% \always{} command ensures that its contents are visible on all slides of the frame.
\newcounter{beamerpausessave}
\newcommand{\always}[1]{\setcounter{beamerpausessave}{\value{beamerpauses}}
    \setcounter{beamerpauses}{0}\pause #1 
    \setcounter{beamerpauses}{\value{beamerpausessave}}\addtocounter{beamerpauses}{-1}\pause}

\begin{document}
\begin{frame}
This problem has three parts.
  \begin{enumerate}
    \always{\item What is the answer to part 1?\\}\pause
      First interpret the question. Then calculate
      \begin{align*}
        \Pr[X\in A] &=\pause \frac{1}{2^n} \sum_{i=0}^n \binom{n}{i} \\ 
        &=\pause 1
      \end{align*}
    \always{\item What is the answer to part 2?\\}\pause
      More answers, \pause with more parts.
    \always{\item What is the answer to part 3?\\}\pause
      ...
  \end{enumerate}
\end{frame}

\end{document}

Я до сих пор не понимаю, почему именно эта комбинация настроек beamerpausesи использования \pauseсработала, когда ничто более простое не сработало.

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