Wenn ich Beamer für Folien verwende, verwende ich häufig eine itemize
Umgebung, in \pause
der 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 n
die aktuelle Folienanzahl ist. Die only@
Aktion umschließt das Element in einem \only<...>
. Wenn die Spezifikation als Argument für die itemize
Umgebung angegeben wird, wird sie zum Standard für jedes Element.
Wenn Sie den Text eines Elements in einer Schleife angeben möchten, \foreach
können Sie \only
vor 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 iii
und einen neuen \myitem
Befehl. Wenn Sie solche itemize
Umgebungen 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, \AtBeginEnvironment
um den Zähler zurückzusetzen . Das bedeutet jedoch, dass Sie nur eine solche Liste pro iii
verwenden 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 (itemize
frame
iii
frame
\AtBeginEnvironment{itemize}{\setcounter{iii}{0}}
"vielleicht fehlt ein Artikel"), daher ist dies im Moment auf ein Scrollen itemize
pro 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
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}