Animação no beamer: listas aninhadas

Animação no beamer: listas aninhadas

O Beamer possui a [<+->]opção de listas que faz com que cada item apareça separadamente. No entanto, também faz com que os itens em listas aninhadas apareçam separadamente. Como faço para que cada lista aninhada apareça como um todo?

Por exemplo,

\begin{itemize}[<+->]
\item A 
  \begin{itemize}
    \item A1
    \item A2
  \end{itemize}
\item B
  \begin{itemize}
    \item B1
    \item B2
  \end{itemize}
\end{itemize}

cada item aparece separadamente (IOW, 6 slides são criados). Quero que todos os As apareçam simultaneamente e todos os B apareçam simultaneamente (IOW, dois slides em PDF).

PS. Prefiro evitar a <i->anotação explícita.

Responder1

Eu não acredito que você possa. Na documentação (Guia do usuário do Beamer, v.3.33, seção 12.1 na p.110) diz "O⟨especificação de sobreposição padrão⟩é herdado por subambientes. Naturalmente, em um subambiente você pode redefini-lo localmente, configurando-o como <1->." Posso estar errado e pode haver um hack em torno disso, mas parece que esse era o comportamento pretendido.

Sugiro que você defina seu próprio innerItemizeambiente:

\newenvironment{innerItemize}{%
  \begin{itemize}[<1->]%
}{%
  \end{itemize}%
}

\begin{itemize}[<+->]
\item A 
  \begin{innerItemize}
    \item A1
    \item A2
  \end{innerItemize}
\item B
  \begin{innerItemize}
    \item B1
    \item B2
  \end{innerItemize}
\end{itemize}

Se você insistir em seu código original, poderá hackear o itemizeambiente para usar o padrão para o nível externo e usar o equivalente innerItemizepara os níveis internos. Eu não acho que gostaria de tal hack, mas é assim que você faria:

\let\oldItemize\itemize
\let\endoldItemize\enditemize
\newcommand{\myItemize}[1][<1->]{\oldItemize[#1]}
\def\endmyItemize{\endoldItemize}
\let\itemize\myItemize
\let\enditemize\endmyItemize

informação relacionada