Сброс счетчика пауз Beamer между средами внутри оверлея?

Сброс счетчика пауз Beamer между средами внутри оверлея?

Я читал ответ на этот вопросСмешивание надпечатки с блоками перечислений

[Я копирую код еще раз, чтобы вам не пришлось переходить по ссылке]

\documentclass{beamer}
\usetheme{Warsaw}

\begin{document}

\begin{frame}{Test}
  \begin{center}
  text before
  \pause
  \begin{overlayarea}{\textwidth}{3.3cm}
    \only<2-3>{%
        \begin{block}{Some title here}
        \begin{enumerate}[<+->]
        \item One
        \item Two
        \end{enumerate}
        \end{block}}
    \only<4-7>{%
    \begin{block}{Some title here}
        \begin{enumerate}[<+(2)->]
        \item CHicken
        \item Duck
        \item Rooster
        \end{enumerate}
        \end{block}}
  \end{overlayarea}
  text after
  \end{center}
\end{frame}

\end{document}

и я заметил использование числа в скобках в спецификации наложения с приращением по умолчанию во второй enumerateсреде. (см. наличие [<+(2)->]) Только тогда элементы второго пронумерованного списка в overlayareaсреде будут раскрываться по приращению.

Зачем это нужно? Кажется, подразумевается, что beamerpausesсбрасывается между enumerateсредами? Или сбрасывается между onlyкомандами в overlayсреде?

[<+->]Разве это не отвратительное поведение? Потому что это как будто вы должны следить за бимерпаузами. Тогда теряется полезность , не так ли?

решение1

Этот, на первый взгляд, странный феномен можно объяснить, рассмотрев следующий простой пример:

\documentclass{beamer}

\newcommand\showpauses{The value of beamerpauses at this point in slide \insertpagenumber\ is: \thebeamerpauses}

\begin{document}

\begin{frame}{Test}
\only<1-2>{\par\showpauses%
\begin{enumerate}[<+->]
  \item One \showpauses
  \item Two \showpauses
\end{enumerate}
}
\only<3>{\par\showpauses}
\end{frame}

\end{document}

После обработки документа у вас получится презентация из трех слайдов, демонстрирующая значение счетчика beamerpausesна разных этапах.

До второго слайда все идет так, как и ожидалось: в конце enumerateна втором слайде значение beamerpausesравно трем; однако на третьем слайде beamerpausesэто 1. Почему это произошло? Ну, потому что спецификация наложения для \onlyбыла 1-2, поэтомувсепроисходящее на слайдах 1 и 2 будет происходить только для этих слайдов; в частности, пошаговое выполнение, beamerpausesпроизведенное перечислением, будет иметь эффекттолькодля слайдов один и два. В третьем слайде, который не находится под действием \only, счетчик beamerpausesбудет иметь то значение, которое у него было раньше.

Это показывает что-то неправильное с beamer? Я так не думаю; в конце концов, ожидаемое значение\only — держать вещи в рамках его области действиятолькодля указанных слайдов.

Если вы используете <1->(или <1-3>) вместо <1-2>в приведенном выше примере, как в

\documentclass{beamer}

\newcommand\showpauses{The value of beamerpauses at this point in slide \insertpagenumber\ is: \thebeamerpauses}

\begin{document}

\begin{frame}{Test}
\only<1->{\par\showpauses%
\begin{enumerate}[<+->]
  \item One \showpauses
  \item Two \showpauses
\end{enumerate}
}
\only<3>{\par\showpauses}
\end{frame}

вы увидите, что теперь на третьем слайде счетчик имеет значение три, поскольку третий слайд находится в области действия \only.

"Грязное" ручное увеличение счетчика в исходном примере было просто следствием особого эффекта, которого хотел добиться ОП. Возможно, этот же эффект можно было бы достичь другим способом, без ручного вмешательства?

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