例子

例子

我是 LaTeX 和本网站的新用户。我看到本网站的很多答案都有动画。但我无法制作任何这些动画。例如,我问如何减少 tikz L 系统中的线的大小?并得到了这个答案,但是当我用它编译时pdflatex,我得到这个 pdf没有任何动画。我做错了什么?

答案1

由于 OP 要求使用该animate包创建动画 PDF,而无需将动画帧放在单独的(PDF)文件中,因此tikzpicture可以直接将环境放入环境中animateinline

\documentclass{article}
\usepackage{animate}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{A}{%
  \symbol{F}{\pgflsystemstep=0.6\pgflsystemstep\pgflsystemdrawforward}
  \rule{A->F[+A][-A]}
}

\begin{document}
\begin{animateinline}[controls,autoplay,loop]{2}
\multiframe{8}{n=1+1}{
  \begin{tikzpicture}[scale=10,rotate=90]
    \draw (-.1,-.2) rectangle (.4,0.2);
    \draw [blue,opacity=0.5,line width=0.1cm,line cap=round]
      l-system [l-system={A,axiom=A,order=\n,angle=45,step=0.25cm}];
  \end{tikzpicture}    
}
\end{animateinline}
\end{document}

答案2

这里有两件事,

  1. 生成一个 gif 文件(我们通常在这里做,在这个网站上上传)。
  2. 将动画放入 pdf 文件内。

首先,我选择 imagemagick。安装imagemagick并确保它convert.exe位于系统路径中。生成您的 pdf 文件(如您在 OP 中的链接中所示)。然后使用命令提示符从同一文件夹中发出此命令。

convert -delay 10 -loop 0 -density 400 -alpha remove lsystems.pdf lsystems.gif  

根据需要更改参数。有关详细信息,请参阅 imagemagick 的文档。通常,我更喜欢使用批处理文件以便重复使用。将下面的内容保存到mygifbatch.bat与您的 pdf 文件相同的文件夹中的文件中。

@ECHO ON
cls

REM convert to animated gif

CD /D %~dp0
mkdir gifs
SET Program="convert.exe"
for %%A in (*.pdf) do %Program%  -delay 30 -loop 0 -density 200 -alpha remove %%A gifs/%%~nA.gif
Pause

要转换,双击mygifbatch.bat文件即可转换全部将当前文件夹中的 pdf 文件转换为子目录内的 gif 文件gifs

现在是第二步。您可以animate像以下代码一样使用包:

\documentclass[preview,border={10pt 0pt 10pt 10pt}]{standalone}

\usepackage{filecontents}
    %% This is your file to be animated
\begin{filecontents*}{lsystems.tex}  
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}\PreviewEnvironment{tikzpicture}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{A}{
\symbol{F}{\pgflsystemstep=0.6\pgflsystemstep\pgflsystemdrawforward}
\rule{A->F[+A][-A]}
}
\begin{document}
\foreach \n in {1,...,8} {
\begin{tikzpicture}[scale=10,rotate=90]
\draw (-.1,-.2) rectangle (.4,0.2);
\draw
    [blue,opacity=0.5,line width=0.1cm,line cap=round]
    l-system [l-system={A,axiom=A
    ,order=\n,angle=45,step=0.25cm}];
\end{tikzpicture}
}

\end{document}
\end{filecontents*}
%
\immediate\write18{pdflatex lsystems}

%% convert to GIF animation. Uncomment following line to have a gif animation in the same folder.
%\immediate\write18{convert -delay 10 -loop 0 -density 400 -alpha remove lsystems.pdf lsystems.gif}
%%

\usepackage{animate}
\begin{document}
\begin{preview}
%\animategraphics[controls,autoplay,loop,scale=<integer>]{<frame rate>}{<PDF filename without extension>}{<left blank>}{<left blank>}
\animategraphics[controls,autoplay,loop,scale=1]{2}{lsystems}{}{}
\end{preview}
\end{document}

在这里,我习惯于filecontents编写.tex文件并pdflatex从主文档中编辑它。因此,您需要--shell-escape在编译时使用。如果您已经有 pdf 文件,则不需要行3--32。应使用 Adob​​e Reader 查看 pdf。有关更多详细信息,请参阅animate文档(texdoc animatetexdoc.net)。

有一个不错的阿拉拉规则由 Chris (cmhughes) 编写,可轻松从 pdf 生成 gif。从以下位置安装酷炫工具 araraPaulo 的 github存储库。它包含在 texlive 中。但是,如果您是 miktex 用户,则必须自行安装它。现在保存cmhughes代码按名称放入文件中animate.yaml。将此文件放入某个文件夹C:\Users\<your name>\AppData\Roaming\Arara\rules(例如,对于 Windows)。然后araraconfig.yaml在主目录中创建一个文件(C:\Users\<your name>通常),其中包含以下内容:

!config
paths:
- C:\Users\<your name>\AppData\Roaming\Arara\rules

您可以添加许多这样的路径。现在您可以开始了。在您的 tex 文件中添加以下内容

% arara: pdflatex
% arara: animate: {density: 200, delay: 20}

示例代码(lsystems.tex):

% arara: pdflatex
% arara: animate: {density: 200, delay: 20}
\documentclass[tikz]{standalone}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{A}{
\symbol{F}{\pgflsystemstep=0.6\pgflsystemstep\pgflsystemdrawforward}
\rule{A->F[+A][-A]}
}
\begin{document}
\foreach \n in {1,...,8} {
\begin{tikzpicture}[scale=10,rotate=90]
\draw (-.1,-.2) rectangle (.4,0.2);
\draw
    [blue,opacity=0.5,line width=0.1cm,line cap=round]
    l-system [l-system={A,axiom=A
    ,order=\n,angle=45,step=0.25cm}];
\end{tikzpicture}
}
%
\end{document}

lsystems.tex用-编译arara lsystems.texarara还可以与很多编辑器集成。详情可参考漂亮的arara手册。

在此处输入图片描述

答案3

您可以创建.gif 动画通过以下步骤:

  1. 创建包含多页的 PDF。每页都是动画的一部分。最简单的方法可能是使用beamer文档类
  2. 使用pdfcrop和 imagemagicksconvert创建动画。

对于 Linux 用户

为了使第 2 步简单易行,我对每个项目使用以下 Makefile:

SOURCE = bellman-ford-algorithm
DELAY = 80
DENSITY = 300
WIDTH = 512

make:
    pdflatex $(SOURCE).tex -output-format=pdf
    make clean

clean:
    rm -rf  $(TARGET) *.class *.html *.log *.aux *.toc *.snm *.out *.nav

gif:
    pdfcrop $(SOURCE).pdf
    convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
    make clean

animatedGif:
    make
    pdfcrop $(SOURCE).pdf
    convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
    make clean

transparentGif:
    convert $(SOURCE).pdf -transparent white result.gif
    make clean

png:
    make
    make svg
    inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png

svg:
    make
    #inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
    pdf2svg $(SOURCE).pdf $(SOURCE).svg
    # Necessary, as pdf2svg does not always create valid svgs:
    inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg
    rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg
    inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg
    rm $(SOURCE)2.svg
  1. 只需将其保存为Makefile(请注意 Makefile 有制表符,而不是四个空格!因此复制粘贴可能不起作用)
  2. 根据需要替换前 4 个变量
  3. 输入make animatedGif你选择的 shell(大多数人可能会使用bash,但zsh插件oh-my-zsh提供了 Makefile 的选项卡式自动完成功能 :-))

例子

欧拉路径

参见我的文章“如何可视化图形算法“有关如何创建它的更多信息:

在此处输入图片描述

乔莱斯基分解

来源:LaTeX 示例

在此处输入图片描述

答案4

目前我不确定这有多大用处。不过,这里有我评论的一个稍微详细一点的版本,以及一个用 beamer 创建的动画示例。与其他示例不同,这个示例非常简单。

基本上PDF问题中链接的由可用于制作动画的单个帧组成,每页一帧。要真正让它们动起来,你需要一些支持它的东西。人们发布的动画往往是从 pdf 输出创建的 .gif。其他答案中提到了几种制作这些动画的方法。

beamer 还可以通过快速显示一张又一张图像来创建动画效果。一种方法是将不同的帧包含在不同的幻灯片上,并告诉 beamer 为它们制作动画。\includegraphics例如,可以感知叠加规范。本质上,您将第一帧包含在第一张幻灯片上,将第二帧包含在第二张幻灯片上,依此类推。

beamer 还与 tikz 等软件包配合使用,拥有其他一些绝招。这些软件只需使用 TeX 代码即可创建动画效果。例如,您可以逐渐改变颜色来模拟运动。以下示例从一个文本淡入另一个文本。我在演示文稿中使用了此版本,以传达第二个文本正在解释第一个文本的想法。我只是将此处的文本更改为与 TeX 相关的内容。当您单击第一张幻灯片时,文本会淡出,并由最后一张幻灯片上的文本替换,该文本会淡入。正如我所说,这与其他人发布的复杂动画完全不同 - 我想,它只是动画最简单的形式。但它可以非常有效地完成所有这些。毕竟,我希望重点放在文本的内容上 - 真正令人印象深刻的动画只会分散人们对要点的注意力。(显然,这并不适用于我在此处使用的虚拟文本,但请考虑尝试传达关键概念的含义或学科的性质。)

这在 acroread 中对我有用,但在 Okular 中却不行。因此它在 Adob​​e Reader 中应该可以正常显示,但我不确定 Foxit Reader 或 Evince 是否能正常显示。

\documentclass{beamer}
\usepackage{fixltx2e}
\usepackage{texnames}

% lliwiau arbennig
\setbeamertemplate{background canvas}[default]
\setbeamercolor{background canvas}{bg=black}
\setbeamercolor{normal text}{fg=blue!40!white,bg=black}
\setbeamercolor{alerted test}{fg=blue!40!white,bg=black}
\setbeamercolor{quote}{fg=blue!40!white,bg=black}

%\title[]{}
\title{Animation with Beamer}
\subtitle{An Extremely Simple Example}
\date{}
\subject{}  % PDF cat. only

\begin{document}

\begin{Form}

\setbeamertemplate{background}{}

\newcount\aopaqueness
\newcount\qopaqueness
\begin{frame}[plain]
  \animate<2-19>
  \animatevalue<1-10>{\aopaqueness}{100}{0}
  \animatevalue<11-20>{\qopaqueness}{0}{100}
  \begin{center}
      \begin{overprint}[.65\paperwidth]
        \onslide<1-10>
          \begin{colormixin}{\the\aopaqueness!averagebackgroundcolor}
            \mbox{ }\vspace*{\fill}\\
            \begin{center}
              \huge\bfseries
              pdf\LaTeX\\[.5em]
              with beamer and friends
            \end{center}
            \vspace*{\fill}\mbox{ }\\
          \end{colormixin}
        \onslide<11-20>
          \begin{colormixin}{\the\qopaqueness!averagebackgroundcolor}
            \begin{quote}
              \usefont{T1}{pzc}{m}{n}\huge
                Beautiful typography\dots\\[.5em]
                for paper and screen.\\[.5em]
            \end{quote}
            {\hspace*{\fill}\small \emph{Presenting without Tears}, A.\ Typesetter}
          \end{colormixin}
      \end{overprint}
  \end{center}
\end{frame}

\end{Form}

\end{document}

编辑:感谢一条有用的评论,我已捕获 acroread 中显示的动画。虽然这是一个 gif,但动画本身在 PDF 中。gif 只是录制屏幕截图。虽然录制似乎丢失了这一点,但动画实际上是通过单击第一张幻灯片触发的。但是,由于某种原因,在实际与 PDF 交互时,录制会丢失 acroread 中显示的指针的图片,因此您只能想象这一点。此外,在 PDF 中,动画只播放一次,正如您所期望的那样,它旨在传达两段文本之间的关系。

Simple animation for transition created in beamer and displayed in acroread

编辑:预览时效果很好,但现在我已发布,只看到最后一帧静止画面。不知道为什么...

相关内容