我想用 lualatex 编译几个 pgfplots 图片,因为它动态分配内存用于编译(与 pdflatex 相反)。在某些图中,比如下面给出的 MWE.tex,我想使用轮廓图。这通常用 gnuplot 完成。要编译这样的文档,我需要使用 --shell-escape,这样就可以在编译文档时执行 gnuplot 命令。
\documentclass[a4paper]{article}
\usepackage[utf8]{luainputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot3[contour gnuplot]
{x+y};
\end{axis}
\end{tikzpicture}
\end{document}
如果我用
pdflatex --shell-escape MWE.tex
一切正常,日志内容大致如下
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=pdflatex 2016.6.12) 13 JUN 2016 10:46
entering extended mode
\write18 enabled.
....
Package pgfplots notification 'compat/show suggested version=true': document has been generated with the most recent feature set (\pgfplotsset{compat=1.13}).
\openout3 = `MWE_contourtmp0.dat'.
\openout3 = `MWE_contourtmp0.script'.
runsystem(gnuplot "MWE_contourtmp0.script")...executed.
如果我使用 lualatex --shell-escape MWE.tex 我会收到以下错误:
This is LuaTeX, Version 0.95.0 (TeX Live 2016) (format=lualatex 2016.6.12) 13 JUN 2016 10:52
system commands enabled.
...
Package pgfplots notification 'compat/show suggested version=true': document has
been generated with the most recent feature set (\pgfplotsset{compat=1.13}).
Package pgfplots info on input line 10: Using 'lua backend=false' for plot 0 (type 'contour external'): plot handler does not support LUA.
\openout3 = MWE_contourtmp0.dat
\openout3 = MWE_contourtmp0.script
gnuplot "MWE_contourtmp0.script"
! Package pgfplots Error: sorry, plot file{MWE_contourtmp0.table} could not be opened.
.table 文件存在并且看起来与 pdflatex 创建的文件相同,但它说无法执行。
(我昨天刚刚安装了 texlive 2016,所以一切都应该是最新的。)
答案1
这是 TexLive 2016 附带的 lualatex 引入的一个错误。
pgfplots 的下一个版本将修复不兼容性(将是 1.14)。