使用 LaTex 进行动画绘图?

使用 LaTex 进行动画绘图?

我不是 LaTeX 专业人士,所以我不知道以下是否可行以及如何做到这一点。

我有一张图形(一个图,jpg),它显示了一个时间序列。我知道在 PowerPoint 中,如果一个人来到演示文稿中的幻灯片,时间序列曲线就会被绘制出来,因此不仅仅是显示/出现,而是慢慢地绘制成一条曲线,所以人们可以看到计算机实际上画出了这条线,就像人类画线一样。有人知道我该怎么做吗?

答案1

在这个答案中,我将解释如何制作 PDF 和 GIF 格式的动画:

确保您已安装以下应用程序并将 PATH 系统变量设置为它们的位置。

  1. TeXLive 或 MikTeX。
  2. GhostScript。您可以安装 32 位或 64 位版本。32 位和 64 位对应的应用程序名称分别为gswin32c.exegswin64c.exe
  3. ImageMagick。创建 GIF 动画时需要它。您可以安装 32 位或 64 位版本。

前两节将指导您创建一些支持文件,以简化您的工作流程。最后一节将展示如何利用支持文件来创建动画。

为 GIF 动画创建多用途批处理文件

创建一个名为如下的批处理文件GifAnimate.bat。建议将其保存在单独的目录中,以便其他项目可以使用它。不要忘记将 PATH 设置为其位置。

rem this is GifAnimate.bat

rem %1 : filename (without extension) of a PDF file having pages to be animated.

rem %2 : delay between frames (in 1/100 miliseconds).

rem %3 : density of the GIF output. The higher it is the bigger output.

echo off

rem remove the previous GIF animation if any.
del %1.gif

convert -delay %2 -loop 0 -density %3 %1.pdf %1.gif

为 PDF 动画创建多用途批处理文件和模板

创建一个名为如下的批处理文件PdfAnimate.bat。建议将其保存在单独的目录中,以便其他项目可以使用它。不要忘记将 PATH 设置为其位置。

rem this is PdfAnimate.bat

rem %1 : filename (without extension) of a PDF file having pages to be animated.

rem %2 : frame rate (in frames per second).

rem %3 : scale of the GIF output. The higher it is the bigger output.

echo off

rename %1.pdf %1-animate.pdf

pdflatex -interaction=batchmode --jobname=%1 "\newcommand\InputFileName{%1-animate}\newcommand\FrameRate{%2}\newcommand\OutputScale{%3}\input{PdfAnimateTemplate}"

del %1-animate.pdf

创建一个名为如下的模板文件PdfAnimateTemplate.tex。建议将其保存在本地TDS中,以便其他项目可以使用它。

% this is PdfAnimateTemplate.tex
\documentclass[preview,border=12pt]{standalone}
\usepackage{animate}
\begin{document}
\animategraphics[autoplay,loop,scale=\OutputScale]{\FrameRate}{\InputFileName}{}{}       
\end{document}

创建 GIF 和 PDF 动画

test.tex创建一个名为如下的LaTeX 输入文件:

\documentclass[pstricks,border=12pt]{standalone}

\usepackage{pst-plot}

\psset{plotpoints=3000,algebraic}


\begin{document}
\multido{\r=-3.5+0.5}{15}
{
    \begin{pspicture}(-4,-2)(4,2)
        \psaxes[arrows=->,linewidth=0.2pt](0,0)(-3.5,-1.5)(3.5,1.5)[$x$,0][$y$,90]
        \psplot[linecolor=red]{-3.5}{\r}{sin(3*x)}
    \end{pspicture}
}
\end{document}

首先使用 LaTeX 或 XeLaTeX 对其进行编译。

使用 LaTeX 如下(依次执行):

latex test.tex
dvips test.dvi
ps2pdf test.ps

使用 XeLaTeX 如下:

xelatex test.tex 

您将获得一个名为 的 PDF 输出test.pdf。它由 15 页组成。

为了得到相应的GIF动画,执行GifAnimate.bat test 20 250,我们将得到以下输出:

在此处输入图片描述

要获取相应的PDF动画,执行PdfAnimate.bat test 25 3,我们将得到一个PDF动画(这里无法显示)。

各种各样的

响应扬尼斯·拉扎里德斯' 在下面评论。我懒得给蝙蝠侠做动画,因​​为曲线有很多不连续之处。相反,我给出了另一个例子。希望下面的图表更令人兴奋!

在此处输入图片描述

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-solides3d}

\psset{viewpoint=50 20 10 rtp2xyz,Decran=50,linewidth=0.5\pslinewidth}


\begin{document}
\multido{\rx=-0.5+0.05,\ry=-0.45+0.05,\i=1+1}{20}
{
    \begin{pspicture}(-0.5,-0.5)(0.5,0.5)
    \rput(0,0){%
    \begin{pspicture*}(-0.5,-0.5)(0.5,0.5)
        \defFunction[algebraic]{helicespherique}(t)
        {0.5*cos(10*t)*cos(t)}
        {0.5*sin(10*t)*cos(t)}
        {0.5*sin(t)}
        \ifnum\i=1
        \psSolid
        [
            object=sphere,
            linewidth=0.1pt,
            linecolor=red,
            resolution=720,
            action=draw*,
            ngrid=9 9,
            r=0.5
        ]\fi
        \psSolid
        [
            object=courbe,
            linewidth=0.05pt,
            linecolor=blue,
            resolution=720,
            range=pi \rx\space mul \ry\space pi mul,
            function=helicespherique,
            r=0.01
        ]
    \end{pspicture*}}
    \end{pspicture}
}
\end{document}

回应给定的评论

如果您想test.pdf在 PDF 文档中添加动画(包含 15 页),请使用以下模板并使用 进行编译pdflatex

\documentclass{article}
\usepackage{animate}
\begin{document}
% your other contents go here
\animategraphics[autoplay,loop,scale=<OutputScale>]{<FrameRate>}{test}{}{}
% your other contents go here      
\end{document}

在哪里

  • <OutputScale>是表示缩放因子的实数。
  • <FrameRate>是一个表示每秒帧数的整数。

当然,<>不是语法的一部分。

答案2

最好的办法是使用动画包。请查看其第 14 页的示例手动的。您需要使用 Acrobat Reader 才能正确查看。

相关内容