gnuplottex e lualatex

gnuplottex e lualatex

EDITAR:Esta questão cobre um bug emgnuplottexque será corrigido no TeXLive 2013. Se você ainda deseja corrigir o bug, baixe a versão upstream mais recente do CTAN e compile-a você mesmo.


Deixargnu.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}

Agora estou tentando compilar com lualatex; infelizmente isso não funciona. Eu liguei lualatexda maneira

$ lualatex --shell-escape gnu.tex

O arquivo de log lê

...
 \write18 enabled.
...
Package gnuplottex Warning: Shell escape not enabled.
(gnuplottex)                You'll need to convert the graphs yourself..
...

Se eu compilar com pdflatexa linha de comando

$ pdflatex --shell-escape gnu.tex

funciona muito bem.

Resumo:É gnuplottexincompatível com lualatex?

Responder1

Eu consideraria isso um bug gnuplottex.sty: o pacote testa o escape do shell escrevendo um arquivo /tmpe atribuindo um nome a elesemextensão. As implementações do TeX podem diferir no tratamento de extensões ausentes em nomes de arquivos, mas devem fazer a mesma coisa quando uma extensão for encontrada. Então, se o teste for

%% 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

tudo funcionará (adicionei uma .texextensão explícita).

Você pode contornar esse bug adicionando seu próprio teste:

\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}

Você ainda receberá a mensagem, mas o documento será compilado corretamente quando -shell-escapefor fornecido na linha de comando. Você precisa da versão LuaTeX> 0.67 para esta solução alternativa.

informação relacionada