Странное управление tex файлами в Gnuplot с термином tikz

Я обнаружил странное явление. Если мы запустим следующий скрипт gnuplot (в папке с gnuplot-lua-tikz-common.tex, gnuplot-lua-tikz.sty, gnuplot-lua-tikz.tex, t-gnuplot-lua-tikz.tex)

tikzfile="test.tex"
plot x**2
set term tikz standalone monochrome
set output tikzfile #
replot              #
cmd="pdflatex -interaction=nonstopmode ". tikzfile
system(cmd)

мы обнаружили следующую фатальную ошибку

! Emergency stop.
<*> test.tex

!  ==> Fatal error occurred, no output PDF file produced!

В любом случае у нас есть файл test.tex. Следовательно, если мы повторно запустим тот же сценарий с прокомментированными строками, отмеченными знаком #, мы не получим ошибки и получим идеальный файл test.pdf.

Во время первого выполнения с set term у нас есть пустой файл, с replot мы его заполняем, но до конца exec мы не можем использовать его в качестве ввода из pdflatex. Почему?

Во время второго выполнения у нас уже есть файл test.tex, поэтому, если мы прокомментируем set term и replot, мы сможем использовать его как входные данные для pdflatex. Почему?

Спасибо.


person Giulio Masetti    schedule 23.12.2015    source источник
comment
Поместите set output (да, без каких-либо параметров) перед вызовом pdflatex, который сбрасывает выходной файл. См. Также stackoverflow.com/a/20347095/2604213   -  person Christoph    schedule 23.12.2015
comment
Большое спасибо @Christoph   -  person Giulio Masetti    schedule 23.12.2015


Ответы (1)


Gnuplot не очищает и не завершает выходной файл автоматически после plot.

Итак, если вы хотите продолжить обработку выходного файла из сценария gnuplot, вы должны заранее явно закрыть файл с помощью set output:

tikzfile="test.tex"
set term tikz standalone
set output tikzfile
plot x**2

set output
cmd="pdflatex -interaction=nonstopmode ". tikzfile
system(cmd)
person Christoph    schedule 23.12.2015