为什么 Animate 包会增加我所有外部化 TikZ 图片的文件大小?

为什么 Animate 包会增加我所有外部化 TikZ 图片的文件大小?

我正在使用 TikZ 外部化来编译论文中使用 TikZ 或 PGF 图的图形。自从我使用该包包含动画以来animate,我的每个外部化图形的 PDF 大小都显著增加- 几乎与动画增加的大小完全相同,因为我最终编译的 PDF 也增加了动画大小。

示例:在下面的 MWE 中,我有一个外部化的 TikZ 图形和一个动画。有三种情况:

  • 情况 1:动画被注释掉并排除
  • 情况 2:动画和 TikZ 文件都包含在内
  • 情况 3:外部化的 TikZ 文件被排除

现在在情况 1 中,文件大小如下:

  • animateMWE.pdf:9,002 字节
  • extfig-pdfout.pdf:1,175 字节

在情况 2 中,文件大小为:

  • animateMWE.pdf:594,282 字节
  • extfig-pdfout.pdf:584,854 字节

案例三:

  • animateMWE.pdf:593,569 字节

注意外部化文件中的“多余数据”没有贡献最终编译的文档的大小。最终的文档大小并没有过大,但所有外部化的 PDF 输出文件都是如此。所以这不是一个破坏论文的问题,只是一个好奇的问题。

为什么会发生这种情况?

源文件(包括动画)是可在 Dropbox 上获取. 可与 编译pdflatex -shell-escape animateMWE

animateMWE.tex:

\documentclass[]{article}

\usepackage{animate}
\usepackage{pgfplots}   
\usepgfplotslibrary{external}

\makeatletter
\newcommand{\useexternalfile}[1]{%
    \tikzsetnextfilename{#1-pdfout}%
    \input{\tikzexternal@filenameprefix#1.tikz}}
\makeatother

\tikzexternalize
\tikzset{external/system call={pdflatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}

\tikzset{external/force remake=true}

\begin{document}

\begin{figure}
\centering
\animategraphics[height=8cm,controls,loop]{10}{./3-3mode/img-}{0}{39}
\end{figure}

\begin{figure}
\centering
\useexternalfile{extfig}
\end{figure}

\end{document}

extfig.tikz:

\begin{tikzpicture}
  \draw (-1.5,0) -- (1.5,0);
  \draw (0,-1.5) -- (0,1.5);
  \draw (0,0) circle (1cm);
\end{tikzpicture}

答案1

在外部化过程中,不仅tikzpicture要处理相关环境,还要处理页面的其余部分(包括命令)\animategraphics。后者使用\pdfxformpdfTeX 原语将动画帧封装到 PDF XObject 中,这些 XObject 被插入到外部化图形文件中并增加文件大小,但仍未使用。

可以使用以下解决方法来避免这种情况:

\tikzifexternalizing{}{\animategraphics[height=8cm,controls,loop]{10}{./3-3mode/img-}{0}{39}}

相关内容