Rollende Aufzählungspunkte im Beamer

Rollende Aufzählungspunkte im Beamer

Wenn ich Beamer für Folien verwende, verwende ich häufig eine itemizeUmgebung, in \pauseder jeweils ein Aufzählungspunkt angezeigt wird. Außerdem passen oft nicht alle Punkte, die ich zeigen möchte, auf eine einzelne Folie und ich muss eine neue Folie mit ein paar weiteren Punkten beginnen.

Was ich stattdessen möchte, ist eine itemize-ähnliche Umgebung, die mir (wenn die Punkte nicht auf eine einzelne Folie passen) rollende Aufzählungspunkte liefert, etwas Ähnliches wie das, was der folgende Code macht:

\documentclass{beamer}
\begin{document}
    \begin{frame}
        \begin{itemize}
            \only<-5>{\item one}
            \only<2-6>{\item two}
            \only<3-7>{\item three}
            \only<4-8>{\item four}
            \only<5-9>{\item five}
            \only<6-10>{\item six}
            \only<7-11>{\item seven}
            \only<8-12>{\item eight}
            \only<9->{\item nine}
            \only<10->{\item ten}
            \only<11->{\item eleven}
            \only<12->{\item twelve}
        \end{itemize}
    \end{frame}
\end{document}

Ich möchte jedoch nicht den Überblick darüber behalten, wie viele Folien ich verwende.

Gibt es irgendwo da draußen eine solche Umgebung?

Auch eine Art animiertes Rollen wäre hervorragend, aber das wäre vielleicht zu viel verlangt.

Antwort1

Das ist in Beamer eingebaut:

\documentclass{beamer}
\begin{document}
\begin{frame}
    \begin{itemize}[<only@+-+(4)>]
        \item one
        \item two
        \item three
        \item four
        \item five
        \item six
        \item seven
        \item eight
        \item nine
        \item ten
    \end{itemize}
\end{frame}
\end{document}

Die Overlay-Spezifikation +-+(4)bedeutet dasselbe wie (n+1)-(n+5), wobei ndie aktuelle Folienanzahl ist. Die only@Aktion umschließt das Element in einem \only<...>. Wenn die Spezifikation als Argument für die itemizeUmgebung angegeben wird, wird sie zum Standard für jedes Element.

Wenn Sie den Text eines Elements in einer Schleife angeben möchten, \foreachkönnen Sie \onlyvor jedem Element explizit Folgendes aufrufen:

\documentclass{beamer}
\usepackage{pgffor}
\begin{document}
\begin{frame}
    \begin{itemize}
        \foreach \x in {a,b,...,z} {%
            \only<+-+(4)>{\item \x}
        }
    \end{itemize}
\end{frame}
\end{document}

Siehe Abschnitte 9.6.3 (Aktionsspezifikationen) und 9.6.4 (Inkrementelle Spezifikationen) des Beamer-Handbuchs (v3.22).diese Antwortvon mir.

Antwort2

Hier ist eine Version mit einem ziemlich seltsamen Problem und daher einer Einschränkung. Sie definiert einen neuen Zähler iiiund einen neuen \myitemBefehl. Wenn Sie solche itemizeUmgebungen auf mehr als einer Folie verwenden, muss der Zähler zurückgesetzt werden. Andernfalls würde er, wenn Sie beispielsweise auf der ersten Folie 10 Punkte hätten, auf der nächsten Folie bei Folie 11 beginnen. Also habe ichAbonnieren's, \AtBeginEnvironmentum den Zähler zurückzusetzen . Das bedeutet jedoch, dass Sie nur eine solche Liste pro iiiverwenden können, da Sie sonst durch beide gleichzeitig scrollen. Ich habe versucht, dies zu verbessern, indem ich den Zähler am Anfang jeder Liste zurücksetze . Aber wenn ich die Zeile nicht habe, bekomme ich einen großen Haufen Fehler (itemizeframeiiiframe\AtBeginEnvironment{itemize}{\setcounter{iii}{0}}"vielleicht fehlt ein Artikel"), daher ist dies im Moment auf ein Scrollen itemizepro begrenzt frame. Da es außerdem keinen Vorausschaumechanismus gibt, wird es nicht angehalten, wenn die letzten 5 Elemente angezeigt werden, sondern nur, wenn das letzte vorhanden ist.

Code

\documentclass{beamer}
\usetheme{Darmstadt}
\usepackage{tikz}
\usepackage{etoolbox}

\newcounter{iii}

\AtBeginEnvironment{itemize}{\setcounter{iii}{0}}

\newcommand{\myitem}[2][$\bullet$]
{ \stepcounter{iii}
    \pgfmathtruncatemacro{\endslide}{\theiii+4}
    \only<\theiii-\endslide>{\item[#1] #2}
}

\begin{document}

\begin{frame}[t]
    \begin{itemize}
        \myitem{a \theiii}
        \myitem{b \theiii}
        \myitem{c \theiii}
        \myitem{d \theiii}
        \myitem{e \theiii}
        \myitem{f \theiii}
        \myitem{g \theiii}
        \myitem{h \theiii}
        \myitem{i \theiii}
        \myitem{j \theiii}
        \myitem{k \theiii}
        \myitem{l \theiii}
        \myitem{m \theiii}
        \myitem{n \theiii}
        \myitem{o \theiii}
        \myitem{p \theiii}
        \myitem{q \theiii}
        \myitem{r \theiii}
        \myitem{s \theiii}
        \myitem{t \theiii}
        \myitem{u \theiii}
        \myitem{v \theiii}
        \myitem{w \theiii}
        \myitem{x \theiii}
        \myitem{y \theiii}
        \myitem{z \theiii}
    \end{itemize}
\end{frame}

\end{document}

Ergebnis

Bildbeschreibung hier eingeben

Antwort3

Als Ergänzung zur hervorragenden Antwort von @Matthew Leingang: So können Sie Anfang und Ende fest codieren, um zu vermeiden, dass in der Liste weniger als 4 Elemente angezeigt werden.

\documentclass{beamer}
\usepackage{pgffor}
\begin{document}
\begin{frame}
    \begin{itemize}
        \only<-1>{\item 1}
        \only<-2>{\item 2}
        \only<-3>{\item 3}
        \only<+-+(3)>{\item 5}
        \only<+-+(3)>{\item 6}
        \only<+-+(3)>{\item 7}
        \only<+-+(3)>{\item 8}
        \only<+-+(3)>{\item 9}
        \only<+-+(3)>{\item 10}
        \only<+-+(3)>{\item 11}
        \only<+-+(3)>{\item 12}
        \only<+-+(3)>{\item 13}
        \only<+->{\item 14}
        \only<+->{\item 15}
        \only<+->{\item 16}
        \only<+->{\item 17}
    \end{itemize}
\end{frame}
\end{document}

verwandte Informationen