
Ich brauche einen erscheinenden Effekt für Text wie den hier (in Javascript)http://jsfiddle.net/VZvK7/.
Ich weiß jedoch nicht, wie ich JS-Code in LaTeX einfügen kann (abgesehen von der Verwendung des AcroTeX-Pakets) und das würde mich auch zwingen, Acrobat Reader zu verwenden. Daher möchte ich einen ähnlichen Effekt in Beamer implementieren. Ist das möglich?
(natürlich würde ich gerne alternative Ansätze hierzu sehen)
Antwort1
Die Grundidee besteht darin, jeden Buchstaben auf einer einzelnen Folie unterzubringen.
\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}
Was ich verwendet habe:
\comma
: ein Makro, um Kommas in den Text einzufügen, ohne die Schleife durcheinander zu bringen\myduration
: ein Makro, das einen\transduration
Effekt von 0,05 Sekunden festlegt. Für jeden Buchstaben.\anitext
: ein Makro zum Einstellen des Animationseffekts mit Beamer\temporal
intern. Im Beispiel wird der Text fett angezeigt und\Large
dann wieder normalisiert.
Natürlich muss der zu animierende Text vorverarbeitet werden, sodass auf jeden Buchstaben ein Komma folgt. Dazu habe ich den zu animierenden Text in eine separate Datei gepackt und verwendet:
cat <finename> | fold -w1 | paste -sd+, -
Außerdem muss jedes Leerzeichen durch ein Makro ersetzt werden \space
(ich habe es über Suchen und Ersetzen gemacht).
Das erste Argument des \anitext
Makros entspricht der Anzahl der Zeichen im Originaltext (ohne Kommas). Es ist auch möglich, nach jedem Zeichenpaar ein Komma hinzuzufügen (mit fold -w2
), aber dann ist die Animation weniger flüssig.
Im MwE startet der animierte Text bei Folie Nummer 2, so dass der Benutzer, wenn er die Animation starten möchte, zu Folie Nummer 2 weiterblättern und dann die Fake-Animation bewundern kann :)
Ich habe dies auch mit längeren Texten (bis zu 450 Zeichen) verwendet und abgesehen von der lächerlichen Anzahl von Folien im resultierenden PDF funktioniert es einwandfrei.