我正在使用 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
。后者使用\pdfxform
pdfTeX 原语将动画帧封装到 PDF XObject 中,这些 XObject 被插入到外部化图形文件中并增加文件大小,但仍未使用。
可以使用以下解决方法来避免这种情况:
\tikzifexternalizing{}{\animategraphics[height=8cm,controls,loop]{10}{./3-3mode/img-}{0}{39}}