使用 tikz/pgf 和 gnuplot 与 lualatex

使用 tikz/pgf 和 gnuplot 与 lualatex

我想在 tikzpicture 中使用 gnuplot,但当我使用 lualatex 进行编译时,这似乎不起作用。我使用 tikz 手册中的以下示例:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\pagestyle{empty}

\begin{tikzpicture}[domain=0:4]
\draw[very thin,color=gray] (-0.1,-1.1) grid (3.9,3.9);
\draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$};
\draw[color=red] plot[id=x] function{x} node[right] {$f(x) =x$};
\draw[color=blue] plot[id=sin] function{sin(x)} node[right] {$f(x) = \sin x$};
\draw[color=orange] plot[id=exp] function{0.05*exp(x)} node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}

\end{document}

如果我使用以下代码编译此 .tex 文件

pdflatex --shell-escape tikz.tex

一切正常。

但是,如果我使用与 lualatex 完全相同的命令而不是 pdflatex,我的日志文件会显示

gnuplot tikz.x.gnuplot

Package pgf Warning: Plot data file `tikz.x.table' not found. on input line 16.

gnuplot tikz.sin.gnuplot

Package pgf Warning: Plot data file `tikz.sin.table' not found. on input line 1
7.

有人知道这里的问题是什么吗?提前致谢。

答案1

\write18对于较新的 luatex,shell escape 默认不起作用,shellesc包会将其放回去,这对我来说有效:

\RequirePackage{luatex85,shellesc}
\documentclass{article}
\usepackage{tikz}

\begin{document}
\pagestyle{empty}

\begin{tikzpicture}[domain=0:4]
\draw[very thin,color=gray] (-0.1,-1.1) grid (3.9,3.9);
\draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$};
\draw[color=red] plot[id=x] function{x} node[right] {$f(x) =x$};
\draw[color=blue] plot[id=sin] function{sin(x)} node[right] {$f(x) = \sin x$};
\draw[color=orange] plot[id=exp] function{0.05*exp(x)} node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}

\end{document}

相关内容