文字ごとにアニメーション効果を明らかにする?

文字ごとにアニメーション効果を明らかにする?

ここのようなテキストの表示効果が必要です(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}

使用したもの:

  1. \comma: ループを乱すことなくテキストにカンマを入れるためのマクロ
  2. \myduration: 0.05 秒の効果を設定するマクロ\transduration。各文字に対して。
  3. \anitext: Beamer を内部的に使用してアニメーション効果を設定するマクロ\temporal。この例では、テキストが太字で表示され、\Largeその後通常に戻ります。

もちろん、アニメーション化するテキストは、各文字の後にカンマが続くように前処理する必要があります。そのために、アニメーション化するテキストを別のファイルに入れて、次のコードを使用しました。

cat <finename> | fold -w1 | paste -sd+, -

また、各スペースをマクロで置き換える必要があります\space(検索と置換で実行しました)。

マクロの最初の引数\anitextは、元のテキストの文字数(カンマなし)と同じです。文字の後にカンマを追加することもできますが( を使用fold -w2)、その場合、アニメーションは滑らかではなくなります。

ここに画像の説明を入力してください

MwE では、アニメーション化されたテキストはスライド番号 2 から始まるため、ユーザーはアニメーションを開始したいときにスライド番号 2 に進み、偽のアニメーションを鑑賞することができます :)

私はこれを最大 450 文字の長いテキストでも使用しましたが、結果として得られる PDF のスライドの数がとんでもないほど多いことを除けば、問題なく動作しました。

関連情報