我的工作中有几张图片,因此我开始在外部构建它们,以提高构建速度。但我不想将它们全部外部化,我想即时构建一些小图片。
我发现了一个有趣的变更日志在 sourceforge 上(可能是手册的源代码),其中说
如何部分|\tikzset{external/|\declareandlabel{export}|=false}|
或完全禁用外部化|\tikzexternaldisable|,
但那对我不起作用。我使用
\tikzexternalize[prefix=figures/,figure list=true]
那么什么样的命令可以只外部化标记的图形或防止标记的图形被外部化?
答案1
有几种方法可以打开和关闭外化东西。要全局关闭它,请使用
\tikzexternaldisable
然后再次打开它,
\tikzexternalenable
另一种方法是使用
\tikzset{external/export=false}
和
\tikzset{external/export=true}
这两种方法采用的禁用方式略有不同:第二种方法比第一种“更轻松”。
禁用外化对于单张图片,使用
\tikzset{external/export next=false}
启用/禁用外部化时要注意的一件事是,如果您没有明确命名图片,则它们会按数字顺序分配名称。这意味着如果您将一张新图片放在中间(或为中间的一张图片启用/禁用外部化),则所有后续图片都将乱序。但TikZ 不知道这一点所以你必须自己告诉它(最简单的方法是删除相关的图像文件)。
一个简单的实验表明,如果你想外化最多但要将其关闭一两个,请使用\tikzset{external/export next=false}
之前的命令。
如果你只想将一个或两个外部化,那么你需要在之前将其打开,之后再将其关闭(使用上面给出的两种方法之一)。似乎如果使用禁用它,\tikzset{external/export=false}
那么它不能在一段时间内重新打开单身的图片使用\tikzset{external/export next=true}
(这样就好了)。
答案2
作为关闭并再次打开 TikZ 外部化的替代方案,我最终使用
\usetikzlibrary{external}
\tikzexternalize % activate!
\tikzset{external/only named=true}
并手动启用外部化,仅用于大型绘图/图形
\tikzsetnextfilename{myfigure}% (use % to avoid additional whitespace)
\begin{tikzpicture}
...
\end{tikzpicture}
这尤其有助于LaTeX 投影机如果外部化会破坏\only
动画,而你又不想为每个覆盖层创建缓存文件。
答案3
我认为,最简单的解决方案隐藏在Martin Scharrer 的评论以上,说明范围\tikzexternaldisable
:我现在使用的只是在图像周围放置一个范围并禁用其中的外部化。
{\tikzexternaldisable \tikz{
\draw[<->] (0,-0.15) -- (0,0.35);
}}