¿Letra por letra descubriendo el efecto de animación?

¿Letra por letra descubriendo el efecto de animación?

Necesito un efecto de aparición para texto como el que aparece aquí (en javascript)http://jsfiddle.net/VZvK7/.

Sin embargo, no sé cómo insertar código js en LaTeX (aparte de usar el paquete AcroTeX) y eso también me obligaría a usar Acrobat Reader, por lo que me gustaría implementar un efecto similar en Beamer. ¿Es posible?

(por supuesto, me encantaría ver enfoques alternativos a esto)

Respuesta1

La idea básica es poner cada letra en una sola diapositiva.

\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}

Lo que usé:

  1. \comma: una macro para tener comas en el texto sin estropear el bucle
  2. \myduration: una macro que establece un \transdurationefecto de 0,05 segundos. Para cada letra.
  3. \anitext: una macro para configurar el efecto de animación usando Beamer \temporalinternamente, en el ejemplo el texto aparece en negrita y \Largeluego vuelve a la normalidad.

Por supuesto, el texto que se va a animar debe ser preprocesado para que cada letra vaya seguida de una coma. Para hacer eso puse el texto a animar en un archivo separado y usé:

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

Además, cada espacio debe ser reemplazado por una \spacemacro (lo hice mediante búsqueda y reemplazo).

El primer argumento de la \anitextmacro es igual al número de caracteres del texto original (sin las comas). También es posible agregar una coma después de cada par de caracteres (con fold -w2), pero entonces la animación es menos fluida.

ingrese la descripción de la imagen aquí

En el MwE el texto animado comienza en la diapositiva número 2, de modo que el usuario puede avanzar a la diapositiva número 2 cuando quiera iniciar la animación y luego admirar la animación falsa :)

Utilicé esto también con texto más largo, hasta 450 caracteres, y aparte de la ridícula cantidad de diapositivas del PDF resultante, funciona bien.

información relacionada