Rolando marcadores no projetor

Rolando marcadores no projetor

Freqüentemente, quando uso o beamer para slides, uso um itemizeambiente para \pausemostrar 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 itemizeambiente 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 itemizeambiente a torna o padrão para cada item.

Se quiser especificar o texto do item em um \foreachloop, você pode chamar explicitamente \onlyantes 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 iiie um novo \myitemcomando. Se você usar esses itemizeambientes 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é \AtBeginEnvironmentpara zerar o iiicontador. No entanto, isso significa que você só pode usar uma dessas itemizelistas, framecaso contrário você percorrerá ambas ao mesmo tempo. Tentei melhorar isso zerando o iiicontador 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 itemizepor 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

insira a descrição da imagem aqui

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}

informação relacionada