输出目录和 shell 命令

输出目录和 shell 命令

让我们使用一个小例子来gnuplot绘制一个漂亮的函数tikz

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw plot[domain=-3:3,samples=100] function {sin(x)} ;
\end{tikzpicture}
\end{document}

如果我使用pdflatexxelatex来编译它--shell-escape,则没有问题。

但是,如果我编译-ouput-directory=小路, 和小路与当前目录仅有文件不同.tex,它不起作用(除非您之前在当前目录中对其进行了编译并保留了一些中间文件)。

我想使用gnuplot的功能tikz,并且需要有单独的输出目录。我怎样才能确保pgf/tikz它可以在正确的目录中找到 gnuplot 的输出文件?

编辑

我意识到问题出在文件上

..../texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex在第 347 行:

\immediate\pgfutil@write18{gnuplot \pgf@plotgnuplotfile}%

因此,它调用 gnuplot 时没有考虑到文件.gnuplot不在当前目录中而是在输出目录中。我只是不知道如何在这一行中指定输出目录。是否有包含输出目录路径的宏?

编辑2:我意识到有人在 2011 年问过同样的问题,但没有得到正确的答案(仅适用于 luatex)邮件列表。这是否意味着 pdflatex 没有标准解决方案?

编辑3:我对 minted 软件包有同样的问题,所以我现在想知道是否可以同时使用 shell-escape 命令和输出目录!

编辑4:我刚刚意识到有人在 SE 上问了同样的问题使用 pgfplots 和 gnuplot 并使用输出目录进行编译并且也没有得到适当的答案。

答案1

我将这个答案添加到我自己的问题中,如果有人遇到与我相同的问题,但这不是一个好的答案,我不会接受它。

我决定使用包含输出目录的环境变量。我可以将此变量的内容检索到 LaTeX 中(使用例如这个解决方案,但对于 XeTeX 版本,您需要使用临时文件的绝对路径)并使用它来修补需要修补才能与 --output-directory 一起使用的宏(例如在 pgf 中)。

这不是一个好方法,但是它有效。

相关内容