I would like to use the pgfplots package along with gnuplot. However, I cannot get this to work if I compile using the -output-directory option. For example, if I have the following MWE:




        \addplot gnuplot{x};


If this is saved as test.tex and I compile with lualatex -shell-escape test.tex, it works fine. However, if I try to change the output directory, such a compiling with lualatex -shell-escape -output-directory=.. test.tex, then pgfplots cannot find the file test.pgf-plot.table which contains the gnuplot output. (The output directory .. was just to make this example as simple as possible.)

Is there a way to patch the command that reads gnuplot output to search for the file in the output directory instead of the current working directory?

  • 1
    Just my view ignore it: I usually avoid -output-directory when using gnuplottex,pstool -shell-escape applications due to foldernames,paths,synctex, etc... – texenthusiast Apr 18 '13 at 4:01
  • 1
    Having the same problem, I've investigated a bit. The call to gnuplot is in the function pgfplotgnuplot in the file tex/generic/pgf/modules/pgfmoduleplot.code.tex. The path of the corresponding files is based on \pgfplots@plot@filename in tex/generic/pgfplots/pgfplotscoordprocessing.code.tex; open questions: (1) how do we find out what -output-directory latex was run with? (2) should we make that directory gnuplot's CWD? – anonymous Nov 15 '13 at 0:13

Digging around in the files, mentioned in @anonymous' comment, to find out what to patch, I spotted the following pgf-key. It can simply be overwritten in the preamble of the document.

\pgfkeys{/pgf/plot/gnuplot call={cd build && gnuplot}}

Here the build directory is called 'build' and can of course be changed at your needs. The command concatenation && should work for Windows and Unix. While being the Unix syntax it works without complaining in Windows (tested).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.