程序逻辑

程序逻辑

对于假期,我想跟进有关使用 tikz 制作烟花的问题(怎样燃放烟花?):

我们如何仅使用文字来制作烟花?

我在下面做了一个粗略的尝试。出于某种原因,我无法将每个烟花爆炸放入一个盒子中,以便我可以轻松操纵它。如果我要求超过 12 次旋转,就会开始发生奇怪的事情(见右栏)。

请帮助我改进这个例子或者提出更好的建议。

请,tikz、pstricks、Metapost 或图片模式!仅限文本,但欢迎使用任何风格的 TeX。

在此处输入图片描述

\documentclass{article}
\usepackage{rotating, color}

\newcounter{degrees}
\newcounter{degreeIncrement}

% More than 360 repetitions will max out TeX's memory
% Print error message and end document if more than 360 reps are requested
\newcommand{\textwheelErrorTest}[1]{%
    \ifnum#1 > 360 
        \typeout{%
            ERROR: You asked for #1 repetitions in 
            \noexpand\textwheel, but the maximum is 360.
            I am stopping before TeX exceeds its memory capacity.%
        }%
        \def\erroraction{\end{document}}
    \else
        \def\erroraction{\relax}
    \fi
    \erroraction
}

% For calculating length of string for kerning
\newlength{\strlen}

% #1 text to repeat, #2 color of text, #3 number of times to repeat it
\newcommand{\textwheel}[3]{%
    \textwheelErrorTest{#3}
    %
    \setcounter{degreeIncrement}{360}
    \setcounter{degrees}{0}
    \divide\value{degreeIncrement} by #3
    \settowidth{\strlen}{#1}
    %
    \loop
        \rlap{%
            \turnbox{\value{degrees}}{\color{#2}\quad#1}%
        }\kern -0.5\strlen%
        %
        \addtocounter{degrees}{\value{degreeIncrement}}
    \ifnum\value{degrees} < 360
    \repeat%
}

\begin{document}
\pagecolor{black}

\begin{minipage}{0.45\linewidth}
%
\textwheel{\TeX}{yellow}{6}

\vspace{10\baselineskip}
\textwheel{\LaTeX}{cyan}{12}

\vspace{10\baselineskip}
\textwheel{Xe\TeX}{red}{8}

\vspace{10\baselineskip}
\textwheel{Lua\TeX}{green}{5}

\vspace{15\baselineskip}
\textwheel{Con\TeX t}{magenta}{4}
%
\end{minipage}%
\hfill%
\begin{minipage}{0.45\linewidth}
%
\textwheel{\LaTeX}{white}{20}

\vspace{10\baselineskip}
\textwheel{\LaTeX}{green}{45}

\vspace{15\baselineskip}
\textwheel{\LaTeX}{yellow}{90}

\vspace{25\baselineskip}
\textwheel{\LaTeX}{red}{180}
%
\end{minipage}

\end{document}

答案1

2016 圣诞版

我尝试使用和这样的简单字形在烟花核心附近制作一个几何图形+-当通过旋转和移动进行复制时,我认为这种效果是突出事件的非常好的方式。

在此处输入图片描述

2015 圣诞版

在这里,我介绍我的第一个三连发烟花,其中“为我们”作为内部连发,“一个孩子诞生了”作为第二连发,“主啊!”作为外部连发。代码可以在本文后面的 MWE 中找到。祝大家圣诞快乐。

在此处输入图片描述

2015 新年版

在此处输入图片描述

2014 年版:

圣诞节快乐!

语法是

\textwheel{string}{inner_color}{outer_color}{reps}{fade_length}

其中reps是重复次数,fade_length是从内色到外色的渐变长度(根据最近的编辑,现在可以小于或大于长度string并正常工作)。如果设置为 0pt,则将 设置fade_length为 的长度string

请参阅文章末尾的程序逻辑的描述。

编辑嵌套的文本轮(我感觉就像带有本轮的托勒密),可以这样表述:

\savestack\ST{\tiny\smash{\textwheel{Hallelujah!}{red}{blue}{13}{1.4cm}}}
\textwheel{MerryChristmas~~\ST}{yellow}{red}{28}{0pt}

其中 一个\textwheel被 保存 进 一个 盒子 ( \ST) 然后 被 放在 随后 的 末尾\textwheeel.

编辑以移除杂散空格。编辑以移除\strut产生少量椭圆化的偏差。编辑以通过以千分之一度为单位工作来最小化舍入误差。重新编辑(基于评论建议)以重新引入可选的\strut偏差级别,现在由两个参数控制:\biasfrac和。当(默认值)\biaslength时,对称性得以保留。\biaslength=0pt

在第二个图形中,内部烟花说了 28 次“圣诞快乐”。并且在每个“圣诞快乐”结束时,都会有一个\tiny爆炸,说 13 次“哈利路亚!”。

PS 我刚刚偶然意识到 28x13 个“哈利路亚!”等于 364……一年中的每一天都是一个。上帝保佑!

\documentclass{article}
\usepackage{rotating, xcolor}
\usepackage[margin=4cm]{geometry}
\newcounter{Kdegrees}
\newcounter{KdegreeIncrement}
\newcounter{degrees}

% More than 360 repetitions will max out TeX's memory
% Print error message and end document if more than 360 reps are requested
\newcommand{\textwheelErrorTest}[1]{%
    \ifnum#1 > 360 
        \typeout{%
            ERROR: You asked for #1 repetitions in 
            \noexpand\textwheel, but the maximum is 360.
            I am stopping before TeX exceeds its memory capacity.%
        }%
        \def\erroraction{\end{document}}
    \else
        \def\erroraction{\relax}
    \fi
    \erroraction
}

% For calculating length of string for kerning
\newlength{\strlen}
\newlength\biaslength
\def\biasfrac{.0}% 0 to 1
\biaslength=0pt% \ge 0pt (0pt produces circular symmetry
\def\biasstrut{\rule[-\biasfrac\biaslength]{0pt}{\biaslength}}
% #1 text to repeat, #2 color of text, #3 number of times to repeat it
\newcommand{\textwheel}[5]{\leavevmode\smash{%
    \gdef\innercolor{#2}%
    \gdef\outercolor{#3}%
    \textwheelErrorTest{#4}%
    \def\FadeL{#5}%
    %
    \setcounter{KdegreeIncrement}{360000}%
    \setcounter{Kdegrees}{0}%
    \divide\value{KdegreeIncrement} by #4%
    \settowidth{\strlen}{#1}%
    \ifdim\FadeL=0pt\def\FadeL{\the\strlen}\fi%
    %
    \loop
      \setcounter{degrees}{\value{Kdegrees}}%
      \divide\value{degrees} by 1000\relax%
      \ifnum\value{degrees}<90
        \rlap{\rotatebox[origin=l]{\value{degrees}}{%
         \biasstrut\color{#2}\smash{\FadeAfter{\FadeL}{#1}}}%
        }%
      \else
        \ifnum\value{degrees}<270%
          \kern+\biaslength%
          \llap{\rotatebox[origin=l]{\value{degrees}}{%
           \biasstrut\color{#2}\smash{\FadeAfter{\FadeL}{#1}}}%
          }%
          \kern-\biaslength%
        \else
          \rlap{\rotatebox[origin=l]{\value{degrees}}{%
           \biasstrut\color{#2}\smash{\FadeAfter{\FadeL}{#1}}}%
          }%
        \fi
      \fi
    \addtocounter{Kdegrees}{\value{KdegreeIncrement}}%
    \ifnum\value{Kdegrees} < 359000%
    \repeat%
}}
%%%
\usepackage{xcolor,ifthen}
\newcounter{tmpcounter}
\newlength\cumlength
\newlength\critlength
\newlength\tmplength
\newcount\mynum
\newcount\myden
\makeatletter
\newcommand\FadeAfter[2]{%
  \critlength=#1\relax\cumlength=0pt\relax%
  \def\cumstring{}\fahelp{#1}{#2}}
\newcommand\fahelp[2]{\prefahelper#2 \relax\fahelper#2\relax}
\def\prefahelper#1 #2\relax{\gdef\wordremaining{#1}}
\def\fahelper#1#2\relax{%
  \global\protected@edef\cumstring{\cumstring#1}%
  \ifthenelse{\equal{#1}{\wordremaining}}{%
    \global\protected@edef\cumstring{\cumstring\ }}{}%
  \setbox0=\hbox{\cumstring}%
  \tmplength=.01\critlength\relax%
  \mynum=\wd0\relax%
  \myden=\tmplength\relax%
  \divide\mynum by\myden%
  \setcounter{tmpcounter}{\numexpr100-\the\mynum}%
  \ifnum\thetmpcounter<0\setcounter{tmpcounter}{0}\fi%
  \textcolor{\innercolor!\thetmpcounter!\outercolor!90}{#1}%
  \ifthenelse{\equal{#1}{\wordremaining}}{\ }{}%
    \ifx\relax#2\relax\else\fahelp{\critlength}{#2}\fi%
}
\makeatother
\usepackage{stackengine}
\begin{document}
% CAN EXPERIMENT WITH ASYMMETRIC BIAS WITH THESE TWO PARAMETERS
%\def\biasfrac{.4}% 0 to 1 ROTATES THE ASYMMETRY OF \biaslength
%\biaslength=8pt% \ge 0pt (0pt produces circular symmetry)

\pagecolor{black}

\begin{minipage}{0.45\linewidth}
%
\vspace{-1cm}
\textwheel{Thisisatest}{red}{blue}{35}{2cm}

\vspace{2.8cm}
\savestack\ST{\tiny\smash{\textwheel{Hallelujah!}{red}{blue}{13}{1.3cm}}}
\ST\hspace{6cm}
\textwheel{MerryChristmas~~\ST}{yellow}{red}{28}{2.6cm}

\vspace{6.3cm}
\textwheel{FFFFFadingTest}{yellow}{red}{28}{1.5cm}
\hspace{5cm}
\textwheel{FFFFFadingTest}{yellow}{red}{28}{3cm}

%2015 NEW YEAR'S EDITION
\vspace{6.9cm}
\savestack\ST{\scriptsize\smash{\textwheel{~New~Year!}{orange}{cyan}{7}{2.3cm}}}
\textwheel{~~Have~a~Happy~~\ST}{yellow}{green}{7}{6cm}

%2015 CHRISTMAS EDITION
\hspace{10.15cm}
\savestack\XT{\tiny\smash{\textwheel{~Lord!}{blue!80!orange}{green}{6}{.7cm}}}
\savestack\ST{\scriptsize\smash{\textwheel{~a child is born~\XT}{%
  orange!90!red}{blue!80!orange}{4}{2.1cm}}}
\LARGE\textwheel{~~For unto us~\ST}{red}{orange!90!red}{15}{4cm}

\end{minipage}
\clearpage
\begin{minipage}{0.45\linewidth}
\vspace{2cm}

%2016 CHRISTMAS EDITION
\hspace{1.15cm}
\savestack\ST{\small\smash{\textwheel{~Deo!}{yellow!60!orange}{green!60!orange}{6}{1.2cm}}}
\LARGE\textwheel{+-~Gloria in excelsis~\ST}{red}{blue}{21}{8cm}

\end{minipage}

\end{document}

在此处输入图片描述

在此处输入图片描述

以下是上图的放大图:

在此处输入图片描述

以下显示了两个仅发生改变的情况fade_length(从 1.5 厘米到 3 厘米):

在此处输入图片描述

最后,\strut引入非零的偏差不对称的一个例子\biaslength

% CAN EXPERIMENT WITH ASYMMETRIC BIAS WITH THESE TWO PARAMETERS
\def\biasfrac{.4}% 0 to 1 ROTATES THE ASYMMETRY OF \biaslength
\biaslength=8pt% \ge 0pt (0pt produces circular symmetry)

注意与上图的区别,尤其是“烟花”中心附近。此外,烟花略有偏心。

在此处输入图片描述


程序逻辑

OP 要求对逻辑进行描述。OP 使用了\turnbox宏,在 spinning.sty 文档中将其描述为“旋转环境的宏版本”。我不熟悉该宏,所以我坚持使用我所知道的,即\rotateboxgraphicx.sty 的宏,使用[origin=l]选项围绕框的左边缘旋转。

我知道我想(通过搭接)\rotatebox以同心方式放置一组 es,而 OP 已经为这种循环制定了逻辑,我直接使用了它。对我的帖子的多次编辑表明,在此过程中必须进行许多更正。对于 90 到 270 之间的旋转,一个问题是,框的“尾部”不能向左推过 x=0 位置,因此框的左侧原点被向右推。对此的补救措施是\llap在 90 到 270 之间以及\rlap圆上的其他地方使用。\ifnum\value{degrees}...内部的分支逻辑\textwheel解决了这一点。

下一个问题是,旋转后的框的垂直高度也限制了框向左的推力。这在 90 度和 270 度旋转时引入了不连续性。这就是我所说的\strut-bias,因为不同的垂直高度会引入不同程度的不连续性。我最初的修正是\kern在 90 度和 270 度旋转之间引入。但即使是字距修正也留下了略微椭圆的结果。

后来,我意识到\smash旋转文本可以解决这个问题,使结果完美对称。\strut然而,一位用户实际上错过了 -bias,所以我通过\biaslength(重新引入的支柱的总高度)和(应用在基线以下的\biasfrac那部分)将其重新引入为可控参数。\biaslength

我早期改进 OP 问题外观的想法之一是使用烟花的连续颜色过渡。我最近回答了这个问题如何在一定长度之后“淡出”文本?我让文本从黑色淡化为白色。我抓住了这种\FadeAfter逻辑,并对其进行了一点调整,使其从颜色 1 变为颜色 2。它本质上是逐个字母地抓取参数,测量到该点的累积长度,并使用该累积长度(相对于指定的淡出长度)来决定该字母的颜色。而在原始逻辑中,我在达到“淡出长度”后关闭了淡出,因为它是白色的,在这里我只是继续使用颜色 2 处理字符串。

出现的另一个问题是 TeX 的\divide命令将结果截断为整数。此宏用于将 360 除以重复次数以获得角度增量。坏消息是它可能会给出错误的结果(我发现要求重复 28 次实际上得到的是 30 次)。此外,所有舍入误差在最终框和 0 度框之间变得非常明显。我的解决方案是以千分之一度为单位进行计算(因此循环到 360000),这样舍入误差会更小。即便如此,循环设置为仅放置不超过 359 度的框,以避免两个几乎重叠的框(在 0 度和 359.xx 度)。

也许我对 OP 的提议做出的最好的补充就是引入了嵌套盒子。为此,我使用了\savestack来自我的stackengine包的 (尽管\savebox/\usebox也同样有效)。这很简单。只需将一个小的保存\textwheel在一个盒子中,然后将该盒子用作核心的一部分\textwheel,将其放在字符串的末尾。由于两个轮子可以有不同的颜色组合,因此可能性是无穷无尽的。

由于重叠和粉碎, s\textwheel的高度和宽度为零。非零值\biaslength实际上可能会稍微改变这一点,我不确定,这就是我\smash编辑嵌套\textwheels 的原因。因此,我使用一系列\vspacees 和\hspacees 将 s 放在页面周围。如果需要,\textwheel可以轻松重叠两个独立的s。\textwheel

答案2

Fireworks,有任何 TeX 版本,但仅限文本吗?

那么旧包happy4th就满足要求了。实际上只是一个小小的混淆的 TeX 文件:

% Author:  Brian Blackmore <[email protected]>
% Date: July 4, 2007
% Version:  20120102
% Original source:  efnet #TeX
% License:  Public Domain
% Requirements:  Plain TeX
%
\nopagenumbers \centerline{Fireworks  Display} \centerline{Brian Blackmore}
\centerline{Page Down As Quickly As You Wish}\centerline{Enjoy}\vfill\eject
\catcode`~\active\let~\catcode~`[\active \let[\let~`]\active ~`Y=1[]\active
~`@=2~`|=][|\expandafter ~`>][>\advance~`:][:\romannumeral~`+][+\count~`H10
~`&][&\def~`*][*\multiply[~\dimen[]\endcsname[[\csname&\burst{\bst{30}{29@}
&\bdYO} &\ss{\rsta{-2.2}{.2}{3@H\rstaY-2.2}{-0.5}{8@ \rsta{-2.2}{0.45}{0}@%
&\ssf{\dra\adva} &\draY+0=1H\loop\dr{x:+0}{y:+0}\vskip-\baselineskip >+0by1
\ifnum+0<\bc\repeat\vfill\eject}&\msa{\rsta{-2}Y0}{4.24@\rsta{-1.5}0Y4.24}}
&\adv#1#2#3#4{ ~0=[#1] ~1=[#3] >~0Hby~1 |\edef[#1]{[the]~0@ ~0=[#2] ~1=[#4]
>~0by~1 |\edef[#2]{[the]~0}~0=[#4]H~1=0.3in>~0by~1|\edef[#4]{\the~0}>+0by1}
&\sf{[ssf]\ssf\ssf\ssf\ssf\ssf@\catcode`!0&\fs{!let\vyi\vxi&\ssfY\sdra\adva
~0=\yi >~0by0inH\ifdim~0<8in \elseH&\yi{8in}&\vyi{0in}\fi}\mf@ +3=\the\time
&\rs{*+3 by12 >+3 by5H+1=+3 [divide]+1by151 *+1by151 >+3by-+1}&\mf{\ssf\ssf
[ssf]&\bd{o}\ssf\ssf} &\asm{\rsta{[email protected]}&!bd{\ifnum+0=1{\bf\TeX}\else
o!fi}} &\adva{+0=1H\loop \adv{x:+0@Yy:+0@{vx:+0}{vy:+0}\ifnum+0<\bc\repeat@
&\ms{[msa][asm][sf]} &\dr#1#2{\vbox to0pt{\parindent0pt\vskip-1in\vskip[#2]
\hboxHto\hsize{\hskip-1in!hskip[#1]\hbox to 0ptY\hss[bd]\hss}\hss}\vss}@\rs
&\gen{|\edef[x:+0]{\xi}|\edef[y:+0]{\yi} +1=+3>+3by+0\rs~0=+3pt\rs\divide~0
by151*~0 by151H>~0by-50.5pt|\edef[vx:+0]Y\the~0}~0=+3pt\rs\divide~0by151*~0
by151>~0by-60.5pt>+3by+1|!edef[vy:+0]Y\the~0}@&\bst#1#2{+0=1 \loop\gen>+0by
1 \ifnum+0<#1\repeat&\bc{#2}&\bd{$\bullet$}}&\sdra{\dra~0=\yi \divide~0Hby3
[font]\tf=cmr10 at~0H!vbox to 0pt{[parindent]0pt\vskip-1in\vskip\yi\hboxHto
\hsize{\hskip-1in\hskip\xi\hbox to0pt{\hss\tf\TeX\hss@\hss}\vss}}&\mburstY%
\bst{60}{59@}&\rst#1#2#3Y&\yi{11in@&\xi{#3in}&!vyi{#1in}&\vxiY#2in}&!uat{O@
\ambd&\bc{1}}&\ambd{&\bdY\ifnum+0=1O\else o\fi}&!bc{10@}H\catcode`\Z\active
&\rsta{\sbm\rst}&\sbm{\sf\burst\mf}\rstY-2@{-0.2}{5.25}!ss\sf&Z{bye@&!ssY13
wEbeDonE37}&!bc{1}\rsta{[email protected]}\ms\mburst&\vxi{0in}\fs!sf\sdra[vskip]%
-\baselineskip\centerline{H\char`\HappyHHJuly 4th\char`\!H}\expandafter[Z]Z

生成的页面是一个包含很多页面的 PDF,很可能在你的硬盘上(texdoc happy4th如果你使用 TeXLive 或 MikTeX,请运行它。对于使用其他 TeX 发行版的更奇怪的人,你可以下载 PDF来自 CTAN)。PDF 只有在全屏模式下快速按下 Page Down 时才有趣。但对于懒人来说,你可以通过 Paul Gaborit 制作的这个动画来看到效果:

动画由 Paul Galborit 制作

玩得开心。祝大家7 月 4 日新年快乐。

答案3

Brian Blackmore / Frans 的例子声音添加使用media9& 动画使用animate

抱歉,需要 Windows 或 Mac 上的 A-Reader。

运行pdflatex -shell-escape代码两次或三次。

声音文件在查看 PDF 时从网络加载。如需离线使用,请下载 mp3 并在构建 PDF 之前调整addresource=...和代码行。source=...

在此处输入图片描述

\documentclass{standalone}
\usepackage{animate}
\usepackage{media9}
\usepackage{filecontents}
\usepackage{multido}

\begin{filecontents*}{\jobname-frames.tex}
\nopagenumbers \centerline{Fireworks  Display} \centerline{Brian Blackmore}
\centerline{Enjoy}\vfill\eject%
\catcode`~\active\let~\catcode~`[\active \let[\let~`]\active ~`Y=1[]\active
~`@=2~`|=][|\expandafter ~`>][>\advance~`:][:\romannumeral~`+][+\count~`H10
~`&][&\def~`*][*\multiply[~\dimen[]\endcsname[[\csname&\burst{\bst{30}{29@}
&\bdYO} &\ss{\rsta{-2.2}{.2}{3@H\rstaY-2.2}{-0.5}{8@ \rsta{-2.2}{0.45}{0}@%
&\ssf{\dra\adva} &\draY+0=1H\loop\dr{x:+0}{y:+0}\vskip-\baselineskip >+0by1
\ifnum+0<\bc\repeat\vfill\eject}&\msa{\rsta{-2}Y0}{4.24@\rsta{-1.5}0Y4.24}}
&\adv#1#2#3#4{ ~0=[#1] ~1=[#3] >~0Hby~1 |\edef[#1]{[the]~0@ ~0=[#2] ~1=[#4]
>~0by~1 |\edef[#2]{[the]~0}~0=[#4]H~1=0.3in>~0by~1|\edef[#4]{\the~0}>+0by1}
&\sf{[ssf]\ssf\ssf\ssf\ssf\ssf@\catcode`!0&\fs{!let\vyi\vxi&\ssfY\sdra\adva
~0=\yi >~0by0inH\ifdim~0<8in \elseH&\yi{8in}&\vyi{0in}\fi}\mf@ +3=\the\time
&\rs{*+3 by12 >+3 by5H+1=+3 [divide]+1by151 *+1by151 >+3by-+1}&\mf{\ssf\ssf
[ssf]&\bd{o}\ssf\ssf} &\asm{\rsta{[email protected]}&!bd{\ifnum+0=1{\bf\TeX}\else
o!fi}} &\adva{+0=1H\loop \adv{x:+0@Yy:+0@{vx:+0}{vy:+0}\ifnum+0<\bc\repeat@
&\ms{[msa][asm][sf]} &\dr#1#2{\vbox to0pt{\parindent0pt\vskip-1in\vskip[#2]
\hboxHto\hsize{\hskip-1in!hskip[#1]\hbox to 0ptY\hss[bd]\hss}\hss}\vss}@\rs
&\gen{|\edef[x:+0]{\xi}|\edef[y:+0]{\yi} +1=+3>+3by+0\rs~0=+3pt\rs\divide~0
by151*~0 by151H>~0by-50.5pt|\edef[vx:+0]Y\the~0}~0=+3pt\rs\divide~0by151*~0
by151>~0by-60.5pt>+3by+1|!edef[vy:+0]Y\the~0}@&\bst#1#2{+0=1 \loop\gen>+0by
1 \ifnum+0<#1\repeat&\bc{#2}&\bd{$\bullet$}}&\sdra{\dra~0=\yi \divide~0Hby3
[font]\tf=cmr10 at~0H!vbox to 0pt{[parindent]0pt\vskip-1in\vskip\yi\hboxHto
\hsize{\hskip-1in\hskip\xi\hbox to0pt{\hss\tf\TeX\hss@\hss}\vss}}&\mburstY%
\bst{60}{59@}&\rst#1#2#3Y&\yi{11in@&\xi{#3in}&!vyi{#1in}&\vxiY#2in}&!uat{O@
\ambd&\bc{1}}&\ambd{&\bdY\ifnum+0=1O\else o\fi}&!bc{10@}H\catcode`\Z\active
&\rsta{\sbm\rst}&\sbm{\sf\burst\mf}\rstY-2@{-0.2}{5.25}!ss\sf&Z{bye@&!ssY13
wEbeDonE37}&!bc{1}\rsta{[email protected]}\ms\mburst&\vxi{0in}\fs!sf\sdra[vskip]%
0pt\expandafter[Z]Z
\end{filecontents*}
\immediate\write18{pdftex \jobname-frames.tex}

\newwrite\TimeLineFile
\immediate\openout\TimeLineFile=\jobname-tln.txt
\multido{\i=0+1}{103}{
  \def\js{}
  \ifthenelse{
    \i=7 \OR \i=18 \OR \i=29 \OR \i=46 \OR \i=57 \OR \i=68 \OR \i=80 \OR \i=91
  }{
    \def\js{:annotRM.boom.callAS('rewind');annotRM.boom.callAS('play');}
  }{}
  \immediate\write\TimeLineFile{::\i \js}
}
\immediate\write\TimeLineFile{::102:anim.fworks.frameNum=1;}
\immediate\closeout\TimeLineFile

\begin{document}
\makebox[0pt][r]{\includemedia[
  width=1ex,height=1ex,
  label=boom,
  activate=pageopen,transparent,noplaybutton,
  flashvars={
    source=http://www.freesfx.co.uk/rx2/mp3s/4/5269_1334666108.mp3
%    source=5269_1334666108.mp3     % uncomment for offline use
   &hideBar=true
  }
%  addresource=5269_1334666108.mp3  % uncomment for offline use
]{}{APlayer.swf}}%
\animategraphics[
  width=\linewidth,
  timeline=\jobname-tln.txt,
  controls,
  label=fworks]{6}{\jobname-frames}{}{}
\end{document}

相关内容