编辑:这个问题涵盖了一个错误gnuplottex
该问题将在 TeXLive 2013 中修复。如果您仍希望修复该错误,请从 CTAN 下载最新的上游版本并自行编译。
让gnu.tex
\documentclass[border=3mm]{standalone}
\usepackage{gnuplottex} % use gnuplot
\usepackage{epstopdf} % convert resulting eps to pdf
\begin{document}
\begin{gnuplot}[terminal=epslatex,terminaloptions=color]
set xlabel '$x$'
set ylabel '$y$'
plot sin(x) title '$\sin x$'
\end{gnuplot}
\end{document}
我现在正尝试编译lualatex
;不幸的是,这不起作用。我lualatex
以这种方式调用
$ lualatex --shell-escape gnu.tex
日志文件内容如下
...
\write18 enabled.
...
Package gnuplottex Warning: Shell escape not enabled.
(gnuplottex) You'll need to convert the graphs yourself..
...
如果我使用pdflatex
命令行进行编译
$ pdflatex --shell-escape gnu.tex
它运行良好。
概括:不相容?gnuplottex
lualatex
答案1
我认为这是一个错误gnuplottex.sty
:该包通过写入文件/tmp
并为其分配名称来测试 shell 逃逸没有扩展名。TeX 实现在处理文件名中缺少的扩展名时可能会有所不同,但在找到扩展名时应该做同样的事情。因此,如果测试是
%% test if shell escape really works
\ifShellEscape
\def\tmpfile{/tmp/w18-test-\the\year\the\month\the\day\the\time.tex}
\ifmiktex
\def\tmpfile{w18-test-\the\year\the\month\the\day\the\time.tex}
\immediate\write18{echo t > "\tmpfile"}
\else
\immediate\write18{touch \tmpfile}
\fi
\IfFileExists{\tmpfile}{\ShellEscapetrue}{\ShellEscapefalse}
\ifmiktex
\immediate\write18{del "\tmpfile"}
\else
\immediate\write18{rm -f \tmpfile}
\fi
\fi
一切都将起作用(我已经添加了一个明确的.tex
扩展)。
您可以通过添加自己的测试来解决此错误:
\documentclass[border=3mm]{standalone}
\usepackage{gnuplottex} % use gnuplot
\usepackage{pdftexcmds,ifluatex}
\makeatletter
\ifluatex
\ifnum\pdf@shellescape=\@ne
\ShellEscapetrue
\fi
\fi
\makeatother
\usepackage{epstopdf} % convert resulting eps to pdf
\begin{document}
\begin{gnuplot}[terminal=epslatex,terminaloptions=color]
set xlabel '$x$'
set ylabel '$y$'
plot sin(x) title '$\sin x$'
\end{gnuplot}
\end{document}
您仍会收到消息,但当-shell-escape
在命令行中给出时,文档将正确编译。不过,您需要 LuaTeX 版本 >0.67 才能实现此解决方法。