![使用 pdflatex 生成的 .pdf 输出文件中部分图像失真,动画过程中部分图像缺失](https://linux22.com/image/257821/%E4%BD%BF%E7%94%A8%20pdflatex%20%E7%94%9F%E6%88%90%E7%9A%84%20.pdf%20%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E4%B8%AD%E9%83%A8%E5%88%86%E5%9B%BE%E5%83%8F%E5%A4%B1%E7%9C%9F%EF%BC%8C%E5%8A%A8%E7%94%BB%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%83%A8%E5%88%86%E5%9B%BE%E5%83%8F%E7%BC%BA%E5%A4%B1.png)
我发现将动画放入.pdf
(便携式文档格式) 文件中是一项.gif
挑战。在此阶段,与使用 LaTeX 和 LaTeX2HTML 程序将动画放入.pdf
文件中相比,我将动画放入文件中的结果看起来相当原始.html
,而我使用了 Nasser M. Abbasi 提供的建议。不过,在这里我将描述我迄今为止在这方面所做的一些工作,并介绍我遇到的一些问题。
我从万维网维基百科上的“javalatex”网页了解到,pdflatex
不支持使用.gif
图像。从我在互联网上读到的内容来看,至少有一种处理此问题的方法是将.gif
动画.gif
文件中的图像转换为一系列.png
(便携式网络图形)图像,每个动画文件中的每个帧.gif
都有一个图像。按照网页。我在 Windows XP Home Edition 操作系统中安装了免费程序 ImageMagick,然后在命令提示符中使用以下形式的命令将动画.gif
文件转换为一系列.png
文件:
convert MyFile.gif MyFile%05d.png
结果,令人欣慰的是,许多图像都以、、等.png
形式命名(之前,我从 ImagicMagick 的网站下载了一些东西,它似乎提供了在我的 Mozilla Firefox Web 浏览器中将文件从 格式在线转换为格式的功能。通过在我的 Firefox Web 浏览器上单击“文件工具”,然后在后续选项中选择“图像转换器”,我就可以使用该功能。但这种转换对我来说不起作用。)。MyFile00000.png
MyFile00001.png
MyFile00002.png
.gif
.png
animate
之前,我在 openSUSE-12.2 Linux 操作系统中安装了 Alexander Grahn 的TeX Live 软件包。我想我是通过综合 TeX 档案网络 (CTAN) 网站获得的http://tug.ctan.org/tex-archive/macros/latex/contrib/animate/doc/animate.pdf。根据可能是他或 Jim Hefferon 的建议,我下载了该文件animate.zip
,并将其内容解压到目录中/usr/share/texmf
。幸运的是,该软件包所需的大多数(如果不是全部)软件animate
似乎都包含在 TeX Live 的现代版本中。---除非这是在更新 openSUSE-12.2 软件的过程中为我完成的,否则至少我最近没有故意特别下载和安装除要animate
添加到我的 TeX Live 安装中的软件包之外的任何新软件包。
为了制作.pdf
包含动画人物的输出文件,我遵循了 Alexander Grahn 的大部分建议并输入,或者已经在我的.tex
文件中输入了以下形式的命令:
\documentstyle[a4paper,12pt]{article}
\usepackage{animate,graphicx}
\begin{document}
In \hyperref[ref]{Figure (Fig. 1)}{Figure (Fig. 1)}{}{MyFigure}
\begin{figure}
\begin{center}
\animategraphics{30}{MyFile}{00000}{00097}
%for 30 frames/second each with a name of the form MyFile00000.png,
MyFile00001.png, ........, MyFile00097.png
%Figure caption here
\label{MyFigure}
\end{center}
\end{figure}
.....
.....
\end{document}
然后我执行了表单的命令。执行之后,我最终在 Acrobat Reader 9.5.1 和 Adobe Reader X 10.1.4 中pdflatex MyFile.tex
打开了名为表单的输出文件。我想在每种情况下,我都必须单击文件中的动画图像才能启动动画,因为图像上出现了一只小小的、白色的右手,上面有一根向上的食指。但在第一次单击之后,出现了一个弹出窗口,其中包含消息“请注意:单击‘签名’以填写并签署此表格”,这条消息并不适用于我的文件。在关闭该窗口(可能是单击其右上角的“X”)之后,我认为动画开始了。我认为每次单击文件中的动画图形时都会执行一次动画。 (似乎我可能看到过其他人的文件,其中包含一个动画图形,不需要我单击它就可以启动该动画。该动画可能只是绘制了一条彩色曲线。并且该动画可能会以重复的方式继续。如果是这样,我认为对于文档的读者来说,我更喜欢这些行为,而不是我在此处报告的行为。)存在一些问题:MyFile.pdf
.pdf
.pdf
.pdf
.pdf
.pdf
- 与水平尺寸相比,垂直尺寸似乎被压缩了。每个动画都是从左到右进行的。当动画到达最后一帧时,垂直尺寸显然与水平尺寸相比被高度压缩了。我认为动画中物体的水平尺寸可能在动画过程中被水平拉伸了,所以最后一幅图像显示的物体比动画开始时水平拉伸得更多。现在,我想我不能排除我所看到的现象可以仅用水平拉伸来解释而不需要任何垂直压缩的可能性。---水平拉伸或垂直压缩的结果使圆看起来像一个椭圆,其水平方向比垂直方向更长。
- 虽然一幅即将动画化的图像在点击开始动画之前,其垂直和水平分量之间的颜色和比例最初是很好的,但我认为在动画的过程中,部分帧图像根本看不到。---也就是说在动画过程中,我认为图像的某些部分可以看到;而另一些部分则看不到。
我想,如果我做得比现在更正确,那么对于.pdf
由文件中最初包含的动画生成的文件中的动画人物,可以想象获得更好的结果。请告诉我如何消除问题 1 和 2,如果可能的话,如何制作连续运行的动画人物,而无需单击它们即可在使用执行文件程序生成的输出文件.gif
中启动它们。.pdf
pdflatex
.tex
编辑2012-11-02:
不幸的是,删除命令周围的\begin{figure}[h]
,\end{figure}
环境和\begin{center}
,命令以及命令下方的 figure-caption 命令并不能消除扭曲。我在该命令下保留了一个命令。查看GIMP [Gnu's Not Unix (GNU) 图像处理程序] 程序中的某些(便携式网络图形)文件,它们似乎没有扭曲;只有在我的输出文件中我才注意到它们的扭曲。从我使用 GIMP 的检查中,我确实注意到动画中图像从左到右的偏移增加了。但这可能是正常的,使动画中的对象看起来像是从左向右移动。在GIMP 中打开文件时,我单击了一个按钮来忽略这种偏移,这使得图像可以在 GIMP 窗口区域内显示。\end{center}
\animategraphics.....
\parbox....
\animategraphics....
\label{...}
\animategraphics....
.png
.pdf
.png
我可能还没有完全探究的一个问题是,软件包 animate 的制作人 Alexander Grahn 写道,他的软件包 animate 需要程序pdftex
,而我一直pdflatex
在我的.tex
文件上使用该程序,它使用graphicx
和animate
其他软件包。我一直使用的程序 pdflatex 版本比我使用的程序版本更好地处理了\documentstyle[a4paper,12pt]{article}
我文件中的命令。Alexander Grahn 还写道:“软件包支持常见的 PDF 制作工作流程,即 pdfLATEX、LATEX -->dvips-->ps2pdf/Distiller 和 (XE)LATEX ---> (x)dvipdfmx。”因此,对于该程序是否也可以与软件包很好地配合使用,这至少看起来令人鼓舞。.tex
pdftex
animate
pdflatex
animate
我请求大家不要以个人批评的态度看待我在这里发表的任何评论。---我的目标是让一个程序为自己工作,.pdf
当图形最初是.gif
(图形交换格式)文件时,在文件中生成动画图形,然后使用免费程序 ImageMagick 将包含动画的文件转换为一系列.png
文件。我感谢 Alexander Grahn 好心地制作了他可能免费的软件包 animate,用于 TeX Live 计算机程序组的安装。
答案1
一些动画 GIF 针对大小进行了优化。也就是说,文件中只存储帧之间的差异。为了生成适合嵌入到包中的自包含 PNG animate
,给定的 GIF 必须在将其分解为组成单帧文件之前取消优化。您可以使用gifsicle
以此目的:
gifsicle --unoptimize orig.gif > unopt.gif
现在,可以unopt.gif
使用convert
ImageMagick 生成编号的 PNG 序列。
要无需单击即可自动启动动画,请使用 选项autoplay
。\animategraphics
选项loop
会连续重复动画。
通过在弹出的消息框中勾选“不再显示”之类的选项,可以一劳永逸地抑制您所引用的 AdobeReader 消息。
该pdflatex
命令仅调用pdftex
预加载了 LaTeX 格式的二进制文件。是的,animate
这是一个 LaTeX 包。因此(pdf)latex
必须在 LaTeX 输入文件上运行。