
ここのようなテキストの表示効果が必要です(JavaScript)。http://jsfiddle.net/VZvK7/。
しかし、LaTeX に js コードを挿入する方法がわかりません (AcroTeX バンドルを使用する以外)。また、Acrobat Reader を使用する必要もあるため、Beamer で同様の効果を実装したいと考えています。可能でしょうか?
(もちろん、これに対する別のアプローチも見てみたいと思います)
答え1
基本的な考え方は、各文字を 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
: 0.05 秒の効果を設定するマクロ\transduration
。各文字に対して。\anitext
: Beamer を内部的に使用してアニメーション効果を設定するマクロ\temporal
。この例では、テキストが太字で表示され、\Large
その後通常に戻ります。
もちろん、アニメーション化するテキストは、各文字の後にカンマが続くように前処理する必要があります。そのために、アニメーション化するテキストを別のファイルに入れて、次のコードを使用しました。
cat <finename> | fold -w1 | paste -sd+, -
また、各スペースをマクロで置き換える必要があります\space
(検索と置換で実行しました)。
マクロの最初の引数\anitext
は、元のテキストの文字数(カンマなし)と同じです。文字の後にカンマを追加することもできますが( を使用fold -w2
)、その場合、アニメーションは滑らかではなくなります。
MwE では、アニメーション化されたテキストはスライド番号 2 から始まるため、ユーザーはアニメーションを開始したいときにスライド番号 2 に進み、偽のアニメーションを鑑賞することができます :)
私はこれを最大 450 文字の長いテキストでも使用しましたが、結果として得られる PDF のスライドの数がとんでもないほど多いことを除けば、問題なく動作しました。