通常,當我使用投影機製作幻燈片時,我會使用一個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}
請參閱投影機 (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}}
我會得到一大堆錯誤(“也許缺少一件物品”),因此目前僅限於每個 滾動itemize
一次frame
。此外,由於沒有前瞻機制,因此當最後 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}