我正在使用\tikzexternalize
它来在主文档之外编译我的图片。
但是,当我在文本中发出简单\tikz
命令时,我希望它们在主文档中进行编译,以节省一些时间。
有没有办法打开/关闭外部化,或者仅将其限制在环境中tikzpicture
?
答案1
\tikzexternaldisable
可以使用和临时禁用/启用全局外部化设置(直到 TeX 组结束)\tikzexternalenable
。另一个选项是设置/tikz/external/export={true/false}
键;变体/tikz/external/export next={true/false}
仅适用于单个图片。
所有这些都在“外部化库”一章中描述。TikZ 用户指南。
答案2
把这个放在你的序言开头
\usepackage{etoolbox} \providetoggle{externalize} \settoggle{externalize}{true}
把这句话放在序言的最后,最重要的是,放在后面
\makeindex
\newcommand{\notexternal}{% \iftoggle{externalize}{\tikzset{external/export next=false}}{} } \iftoggle{externalize}{\tikzexternalize[prefix=figures-compiled/]}{}
放在
\notexternal
你不想被外部化的 tikz 环境/命令之前
这样:
- 你有一个简短的命令来禁用单个图片的外部化
\settoggle{externalize}{true}
您可以通过更改为来禁用整个文档的外部化\settoggle{externalize}{false}
,而无需更改任何其他内容
编辑:替代版本
外部化图片是逐步命名的,如果您在文档中添加/删除/交换图片,则必须重新编译它们,除非您为每张图片指定名称,这可以使用以下代码完成:
未变
新代码:
\newcommand{\externalize}[1][]{% \iftoggle{externalize}{% \ifstrequal{#1}{false}{% \tikzset{external/export next=false}% }{% \ifstrempty{#1}{% \ifcurrfiledir{./figures/}{% \tikzsetnextfilename{\currfilebase} }{} }{% \tikzsetnextfilename{#1} } } }{} } \iftoggle{externalize}{\tikzexternalize[prefix=figures-compiled/]}{}
三种选择:
- 放在
\externalize[false]
你不想被外部化的 tikz 环境/命令之前 - 如果
\externalize[figure_a]
你想命名外部图片figure_a.pdf
- 如果您的文档中包含图片
\include{./figures/figure_1.tex}
,您可以\externalize
不带参数来命名外部图片figure_1.pdf
(如果文件不在figures
文件夹中,则会逐步命名) - 如果您希望图形外部化并以增量方式命名,请不要放任何内容
- 放在