gnuplottex и lualatex

gnuplottex и lualatex

РЕДАКТИРОВАТЬ:Этот вопрос касается ошибки в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и присваивая ему имя.безрасширение. Реализации 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.

Связанный контент