已经发布了几个关于使用 Lualatex 引擎外部化 tikz 的问题。但是,其中大多数都是没有正确答案的死胡同。外部化的原因很简单 - 我正在研究一篇包含许多图形的论文,我想减少编译时间。问题是从未使用 lualatex 和 fontspec 创建 tikz 图形的 pdf。
MWE 如下:
\documentclass[12pt,letterpaper,twoside,openany]{scrbook}
\usepackage{fontspec} % For font handling
\usepackage{pgfplots} % For tikz
\pgfplotsset{
compat=1.11, % Version of pgfplots
}
\usetikzlibrary{external}
\tikzset{external/system call={lualatex
\tikzexternalcheckshellescape -halt-on-error -interaction=batchmode
-jobname "\image" "\texsource"}}
\tikzexternalize[shell escape=-enable-write18]
\begin{document}
\mainmatter
A simple image is \tikz \fill (0,0) circle(5pt);.
\end{document}
最终,我将使用 matlab2tikz 生成的 tikz 文件,但这里使用简单的 \tikz 命令也会发生同样的错误。
是的-enable-write18
,因为我在 Windows 上使用 Miktex。
当我构建此文件时,会创建 dpth 和 md5 文件,但没有 pdf。如果我将外部/系统调用更改为使用 xelatex 而不是 lualatex,则会正确创建 pdf 文件。
一个奇怪的现象是,如果未加载 fontspec 包(并且删除了之前由 xelatex 创建的 pdf),则 lualatex 会成功创建 pdf。即使在这种简单情况下,我也很难相信 fontspec 实际上会导致问题,但删除它似乎可以解决问题。发生了什么?如何在使用 lualatex 时包含 fontspec 包并仍然外部化 tikz?