仅外部化一些图片

仅外部化一些图片

我正在使用\tikzexternalize它来在主文档之外编译我的图片。

但是,当我在文本中发出简单\tikz命令时,我希望它们在主文档中进行编译,以节省一些时间。

有没有办法打开/关闭外部化,或者仅将其限制在环境中tikzpicture

答案1

\tikzexternaldisable可以使用和临时禁用/启用全局外部化设置(直到 TeX 组结束)\tikzexternalenable。另一个选项是设置/tikz/external/export={true/false}键;变体/tikz/external/export next={true/false}仅适用于单个图片。

所有这些都在“外部化库”一章中描述。TikZ 用户指南

答案2

  1. 把这个放在你的序言开头

     \usepackage{etoolbox}
     \providetoggle{externalize}
     \settoggle{externalize}{true}
    
  2. 把这句话放在序言的最后,最重要的是,放在后面\makeindex

     \newcommand{\notexternal}{%
       \iftoggle{externalize}{\tikzset{external/export next=false}}{}
     }
    
     \iftoggle{externalize}{\tikzexternalize[prefix=figures-compiled/]}{}
    
  3. 放在\notexternal你不想被外部化的 tikz 环境/命令之前

这样:

  • 你有一个简短的命令来禁用单个图片的外部化
  • \settoggle{externalize}{true}您可以通过更改为来禁用整个文档的外部化\settoggle{externalize}{false},而无需更改任何其他内容

编辑:替代版本

外部化图片是逐步命名的,如果您在文档中添加/删除/交换图片,则必须重新编译它们,除非您为每张图片指定名称,这可以使用以下代码完成:

  1. 未变

  2. 新代码:

     \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/]}{}
    
  3. 三种选择:

    • 放在\externalize[false]你不想被外部化的 tikz 环境/命令之前
    • 如果\externalize[figure_a]你想命名外部图片figure_a.pdf
    • 如果您的文档中包含图片\include{./figures/figure_1.tex},您可以\externalize不带参数来命名外部图片figure_1.pdf(如果文件不在figures文件夹中,则会逐步命名)
    • 如果您希望图形外部化并以增量方式命名,请不要放任何内容

相关内容