逐字揭开动画效果?

逐字揭开动画效果?

我需要一个像这里(用 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:设置 0.05 秒效果的宏\transduration。针对每个字母。
  3. \anitext:使用 Beamer 内部设置动画效果的宏\temporal,示例中文本显示为粗体\Large然后恢复正常。

当然,要制作动画的文本需要进行预处理,以便每个字母后面都有一个逗号。为此,我将要制作动画的文本放入单独的文件中并使用:

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

此外,每个空格都需要用宏替换\space(我通过搜索和替换来完成)。

宏的第一个参数\anitext等于原始文本中的字符数(不带逗号)。也可以在每对字符后添加一个逗号(带fold -w2),但这样动画就不太流畅了。

在此处输入图片描述

在 MwE 中,动画文本从幻灯片 2 开始,这样当用户想要启动动画时,可以前进到幻灯片 2,然后欣赏假动画:)

我也用它处理较长的文本,最多 450 个字符,除了生成的 PDF 的幻灯片数量太多之外,它运行良好。

相关内容