Beamerpauses-Zähler zwischen Umgebungen innerhalb eines Overlays zurückgesetzt?

Beamerpauses-Zähler zwischen Umgebungen innerhalb eines Overlays zurückgesetzt?

Ich habe die Antwort auf diese Frage gelesenMischen von Überdrucken mit Aufzählungsblöcken

[Ich kopiere den Code erneut, damit Sie dem Link nicht folgen müssen]

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

und mir ist die Verwendung einer Zahl in Klammern in der standardmäßigen inkrementierten Overlay-Spezifikation in der zweiten enumerateUmgebung aufgefallen. (siehe das Vorhandensein von [<+(2)->]) Nur dann werden die Elemente der zweiten nummerierten Liste in der overlayareaUmgebung inkrementell aufgedeckt.

Warum ist das nötig? Es scheint zu bedeuten, dass beamerpauseses zwischen den enumerateUmgebungen zurückgesetzt wird? Oder wird es zwischen den onlyBefehlen in der overlayUmgebung zurückgesetzt?

Ist das nicht ein übles Verhalten? Denn es ist, als ob Sie die Beamerpausen selbst im Auge behalten müssten. Der Nutzen von [<+->]geht dann verloren, nicht wahr?

Antwort1

Das scheinbar seltsame Phänomen kann anhand des folgenden einfachen Beispiels erklärt werden:

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

Nach der Bearbeitung des Dokuments erhalten Sie eine Präsentation mit drei Folien, die den Wert des beamerpausesZählers in verschiedenen Stadien zeigt.

Bis Folie zwei läuft alles wie erwartet: Am Ende von enumerateauf Folie zwei ist der Wert von beamerpausesdrei; auf Folie drei beamerpausesist jedoch 1. Warum ist das passiert? Nun, weil die Overlay-Spezifikation für \onlywar 1-2, alsoalleswas auf den Folien 1 und 2 passiert, wird nur für diese Folien auftreten; insbesondere beamerpauseswird das durch die Aufzählung erzeugte Stepping von Auswirkungen habennurfür Folie eins und zwei. Auf der dritten Folie, die nicht unter dem Einfluss von steht , hat \onlyder Zähler den Wert, den er vorher hatte.beamerpauses

Zeigt dies, dass etwas mit nicht stimmt beamer? Ich glaube nicht; schließlich \onlyist die erwartete Bedeutung von , die Dinge in seinem Rahmen zu halten.nurfür die angegebenen Folien.

Wenn Sie im obigen Beispiel <1->(oder <1-3>) anstelle von verwenden, wie in<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}

Sie werden sehen, dass der Zähler auf Folie drei jetzt den Wert drei hat, da die dritte Folie im Gültigkeitsbereich von liegt \only.

Die „schmutzige“ manuelle Erhöhung des Zählers im ursprünglichen Beispiel war einfach auf den Spezialeffekt zurückzuführen, den der OP erzielen wollte. Vielleicht könnte dieser gleiche Effekt auch auf andere Weise ohne manuelles Eingreifen erzielt werden?

verwandte Informationen