
Freqüentemente, quando uso o beamer para slides, uso um itemize
ambiente para \pause
mostrar um marcador de cada vez. Além disso, muitas vezes todos os pontos que desejo mostrar em um único slide não cabem e preciso iniciar um novo slide com mais alguns pontos.
O que eu gostaria é, em vez disso, de um itemize
ambiente semelhante ao que me desse (quando os pontos não cabem em um único slide) marcadores rolantes, algo semelhante ao que o código a seguir faz:
\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}
No entanto, não quero controlar quantos slides estou usando.
Existe tal ambiente em algum lugar?
Além disso, algum tipo de rolagem animada seria excelente, mas isso pode ser pedir muito.
Responder1
Isso está embutido no projetor:
\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}
A especificação de sobreposição +-+(4)
significa o mesmo que (n+1)-(n+5)
, onde n
é a contagem atual de slides. A only@
ação envolve o item em um arquivo \only<...>
. Colocar a especificação como argumento para o itemize
ambiente a torna o padrão para cada item.
Se quiser especificar o texto do item em um \foreach
loop, você pode chamar explicitamente \only
antes de cada item:
\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}
Consulte as seções 9.6.3 (Especificações de ação) e 9.6.4 (Especificações incrementais) do manual do projetor (v3.22). Tambémesta respostameu.
Responder2
Aqui está uma versão com um problema bastante estranho e, portanto, uma limitação. Define um novo contador iii
e um novo \myitem
comando. Se você usar esses itemize
ambientes em mais de um slide, o contador deverá ser zerado. Caso contrário, se por exemplo você tivesse 10 pontos no primeiro slide, começaria no slide 11 do próximo slide. Então eu useietoolboxé \AtBeginEnvironment
para zerar o iii
contador. No entanto, isso significa que você só pode usar uma dessas itemize
listas, frame
caso contrário você percorrerá ambas ao mesmo tempo. Tentei melhorar isso zerando o iii
contador no início de cada arquivo frame
. Mas se eu não tiver a linha, \AtBeginEnvironment{itemize}{\setcounter{iii}{0}}
recebo uma grande pilha de erros ("talvez um item faltando"), portanto, no momento, isso está limitado a uma rolagem itemize
por arquivo frame
. Além disso, como não há mecanismo de antecipação, ele não irá parar quando os últimos 5 itens forem exibidos, mas apenas quando o último estiver presente.
Código
\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}
Resultado
Responder3
Para referência como uma extensão da excelente resposta de @Matthew Leingang. aqui está como você codifica o início e o fim para evitar que a lista exiba menos de 4 itens.
\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}