Анимация в бимере: вложенные списки

Анимация в бимере: вложенные списки

В Beamer есть [<+->]опция для списков, которая заставляет каждый элемент появляться отдельно. Однако она также заставляет элементы во вложенных списках появляться отдельно. Как сделать так, чтобы каждый вложенный список отображался как единое целое?

Например,

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

каждый элемент отображается отдельно (IOW, создается 6 слайдов). Я хочу, чтобы все A отображались одновременно и все B отображались одновременно (IOW, два слайда в PDF).

P.S. Я бы предпочел избежать явных <i->аннотаций.

решение1

Я не верю, что вы можете. В документации (Руководство пользователя Beamer, версия 3.33, раздел 12.1 на стр. 110) говорится: «⟨спецификация наложения по умолчанию⟩наследуется подокружениями. Естественно, в подокружении вы можете сбросить его локально, установив его в <1->. Я могу ошибаться, и может быть, есть хак вокруг этого, но, похоже, это было предполагаемое поведение.

Я предлагаю вам определить свою собственную innerItemizeсреду:

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

Если вы настаиваете на своем оригинальном коде, вы можете взломать itemizeсреду, чтобы использовать код по умолчанию для внешнего уровня и обратиться к эквиваленту innerItemizeдля внутренних уровней. Я не думаю, что мне понравится такой хак, но вот как вы бы поступили:

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

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