O contador do Beamerpauses é redefinido entre ambientes dentro de uma sobreposição?

O contador do Beamerpauses é redefinido entre ambientes dentro de uma sobreposição?

Eu estava lendo a resposta para esta perguntaMisturando impressão sobreposta com blocos de enumerações

[Copio novamente o código para que você não precise seguir o link]

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

e notei o uso de um número entre parênteses na especificação de sobreposição incrementada padrão no segundo enumerateambiente. (veja a presença de [<+(2)->]) Só então os itens da segunda lista numerada no overlayareaambiente serão descobertos de forma incremental.

Por que isso é necessário? Parece implicar que beamerpausesé redefinido entre os enumerateambientes? Ou é redefinido entre os onlycomandos do overlayambiente?

Isso não é um comportamento desagradável? Porque é como se você devesse monitorar as pausas dos feixes. A utilidade de [<+->]está perdida então, não é?

Responder1

O fenômeno aparentemente estranho pode ser explicado examinando o seguinte exemplo simples:

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

Depois de processar o documento você terá uma apresentação de três slides mostrando o valor do beamerpausescontador em diferentes etapas.

Até o slide dois tudo corre como seria de esperar: no final do enumerateslide dois o valor de beamerpausesé três; entretanto, no slide três, beamerpausesé 1. Por que aconteceu isso? Bem, porque a especificação de sobreposição \onlyera 1-2, entãotudoo que acontecer nos slides 1 e 2 ocorrerá apenas para esses slides; em particular, a revisão beamerpausesproduzida pelo enumerado terá efeitoapenaspara os slides um e dois. No terceiro slide, que não está sob efeito do \only, o contador beamerpausesterá o valor que tinha antes.

Isso está mostrando algo errado com beamer? Eu não acho; afinal, o significado esperado \onlyé manter as coisas sob seu escopoapenaspara os slides especificados.

Se você usar <1->(ou <1-3>) em vez de <1-2>no exemplo acima, como em

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

você verá que agora no slide três o contador tem o valor três, porque o terceiro slide está no escopo de \only.

O incremento manual "sujo" do contador no exemplo original foi simplesmente devido ao efeito especial que o OP queria alcançar. Talvez esse mesmo efeito pudesse ser alcançado de outra forma, sem intervenção manual?

informação relacionada