Буква за буквой раскрывая эффект анимации?

Буква за буквой раскрывая эффект анимации?

Мне нужен эффект появления текста, как здесь (в 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}

Что я использовал:

  1. \comma: макрос для добавления запятых в текст, не нарушая цикл
  2. \myduration: макрос, устанавливающий \transdurationэффект 0,05 секунды. Для каждой буквы.
  3. \anitext: макрос для настройки эффекта анимации с использованием Beamer \temporalвнутри; в этом примере текст отображается жирным шрифтом, а \Largeзатем возвращается к обычному начертанию.

Конечно, текст для анимации должен быть предварительно обработан, чтобы каждая буква сопровождалась запятой. Для этого я поместил текст для анимации в отдельный файл и использовал:

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

Также каждый пробел необходимо заменить макросом \space(я сделал это через поиск и замену).

Первый аргумент макроса \anitextравен количеству символов в исходном тексте (без запятых). Также можно добавлять запятую после каждой пары символов (с fold -w2), но тогда анимация будет менее плавной.

введите описание изображения здесь

В MwE анимированный текст начинается со слайда номер 2, так что пользователь может перейти к слайду номер 2, когда захочет начать анимацию, а затем полюбоваться фальшивой анимацией :)

Я использовал этот метод и с более длинным текстом, до 450 символов, и, если не считать невероятного количества слайдов в полученном PDF-файле, он работает отлично.

Связанный контент