
我需要像這裡(在 javascript 中)這樣的文字的顯示效果http://jsfiddle.net/VZvK7/。
但是我不知道如何將js程式碼插入LaTeX(除了使用AcroTeX Bundle之外),這也會迫使我使用Acrobat Reader,所以我想在Beamer中實現類似的效果。是否可以?
(當然我很樂意看到替代方法)
答案1
基本想法是將每個字母放入一張投影片中。
\documentclass{beamer}
\usepackage{pgffor}
\usepackage{ragged2e} %for justification
\newcommand{\comma}{,}
\newcommand{\myduration}[1]{%
\foreach \l in {#1}{%
\transduration<\l>{.05}%
}%
}
\newcommand{\anitext}[2]{%
\myduration{#1}%
\foreach \i in {#2}{%
\temporal<+>{}{\Large\bfseries \vphantom{Mpgjy}\i}{\vphantom{Mpgjy}\i}% %the phantom removes the bumping
}%
}
\begin{document}
\begin{frame}
\justifying
\pause
\anitext{2,...,122}{%
L,o,r,e,m,\space,i,p,s,u,m,\space,d,o,l,o,r,\space,s,i,t,\space,a,m,e,t\comma,\space,c,o,n,s,e,c,t,e,t,u,r,\space,a,d,i,p,i,s,c,i,n,g,\space,e,l,i,t\comma,\space,s,e,d,\space,d,o,\space,e,i,u,s,m,o,d,\space,t,e,m,p,o,r,\space,i,n,c,i,d,i,d,u,n,t,\space,u,t,\space,l,a,b,o,r,e,\space,e,t,\space,d,o,l,o,r,e,\space,m,a,g,n,a,\space,a,l,i,q,u,a.
}
\end{frame}
\end{document}
我用的是:
\comma
:一個宏,用於在文本中使用逗號而不擾亂循環\myduration
\transduration
:設定0.05 秒效果的巨集。對於每個字母。\anitext
:內部使用Beamer設定動畫效果的宏\temporal
,在範例中文字顯示為粗體,\Large
然後恢復正常。
當然,需要對要製作動畫的文字進行預處理,以便每個字母後面都跟有一個逗號。為此,我將要動畫的文字放入單獨的檔案中並使用:
cat <finename> | fold -w1 | paste -sd+, -
另外,每個空格都需要用巨集替換\space
(我是透過搜尋和替換完成的)。
巨集的第一個參數\anitext
等於原始文字中的字元數(不包括逗號)。也可以在每對字元後面加上一個逗號(帶有fold -w2
),但動畫會不太流暢。
在 MwE 中,動畫文字從第 2 號幻燈片開始,以便使用者在想要開始動畫時可以前進到第 2 號幻燈片,然後欣賞假動畫:)
我也用它來處理更長的文本,最多 450 個字符,除了生成的 PDF 的幻燈片數量令人難以置信之外,它工作得很好。