在投影仪中滚动显示要点

在投影仪中滚动显示要点

当我使用 Beamer 制作幻灯片时,我经常使用一个itemize环境来\pause一次展示一个要点。此外,通常我想在一张幻灯片上展示的所有要点都放不下,我需要在一张新幻灯片上再添加几个要点。

我想要的是一个itemize类似的环境,它可以给我(当要点无法放在一张幻灯片上时)滚动的项目符号,类似于以下代码所做的那样:

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

但是我不想跟踪我使用了多少张幻灯片。

在某个地方有这样的环境吗?

此外,如果能有某种动画滚动就更好了,但这可能要求太高了。

答案1

这是投影机内置的:

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

覆盖规范的+-+(4)含义与 相同(n+1)-(n+5),其中n是当前幻灯片计数。only@操作将项目包装在 中\only<...>。将规范作为itemize环境的参数放入其中,使其成为每个项目的默认值。

如果您想在\foreach循环中指定项目文本,您可以\only在每个项目之前明确调用:

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

请参阅 beamer (v3.22) 手册的第 9.6.3 节(操作规范)和第 9.6.4 节(增量规范)。另请参阅这个答案我的。

答案2

这是一个版本,有一个相当奇怪的问题,因此也有一个限制。它定义了一个新的计数器iii和一个新\myitem命令。如果你itemize在多张幻灯片上使用这样的环境,那么计数器必须重置。否则,例如,如果你在第一张幻灯片上有 10 个点,那么它将在下一张幻灯片上从第 11 张幻灯片开始。所以我用了电子工具箱重置\AtBeginEnvironment计数器iii。但是这意味着您只能使用一个这样的itemize列表,frame否则您将同时滚动浏览它们。我尝试通过iii在每个开始时重置计数器来改进这一点frame。但如果我没有该行,\AtBeginEnvironment{itemize}{\setcounter{iii}{0}}我会得到一大堆错误(“也许有物品丢失”),因此目前仅限于每次滚动一次itemizeframe此外,由于没有前瞻机制,因此在显示最后 5 个项目时它不会停止,而只会在显示最后一个项目时停止。

代码

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

结果

在此处输入图片描述

答案3

作为@Matthew Leingang 的优秀答案的扩展,请参考。下面是如何对开始和结束进行硬编码,以避免列表显示少于 4 个项目。

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

相关内容