如何让 gnuplottex/epstopdf 包与“-output-dir”和“-aux-dir”选项一起工作?

如何让 gnuplottex/epstopdf 包与“-output-dir”和“-aux-dir”选项一起工作?

我似乎无法让该gnuplottex包与我首选的编译选项一起工作。这是一个(不太)简单的例子,说明了我的意思:

\documentclass[a4paper,10pt]{scrreprt}

%     \usepackage{etoolbox}    % proposed fix (not working)
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{gnuplottex}

\graphicspath{{./tmp/}}
\epstopdfsetup{outdir=./tmp/}

% proposed fix (not working)
%     \let\nodirfigname\figname
%     \def\figname{./tmp/\nodirfigname}
% 
%     \expandafter\patchcmd\csname\string\gnuplot\endcsname
%     {\figname}{\nodirfigname}{}{}

\begin{document}

\begin{figure}[htbp]
    \begin{gnuplot}[terminal=epslatex,terminaloptions=color]
        reset
        plot sin(x)
    \end{gnuplot}
    \caption[Gnuplot]{Gnuplot direkt in \LaTeX}
    \label{fig:gnu}
\end{figure}

\end{document}

如果我通过以下方式编译上述文件:

pdflatex -shell-escape -output-directory=./tmp -aux-directory=./tmp bla.tex

我收到以下错误消息:

[正在加载 MPS 到 PDF 转换器(版本 2006.09.02)。] ) 打开 gnuplot 流 bla-gnuplottex-fig1.gnuplot 无法打开加载文件“bla-gnuplottex-fig1.gnuplot”第 0 行:util.c:没有此文件或目录

(./tmp/bla-gnuplottex-fig1.texepstopdf($Id: epstopdf.pl 17496 2010-03-18 17:57:31Z karl $)2.15 !!! 错误:无法打开 bla-gnuplottex-fig1.eps:没有此文件或目录

!包 pdftex.def 错误:未找到文件 `./tmp/bla-gnuplottex-fig1-eps-converted-to.pd f'。

所以显然epstopdf不太喜欢我的tmp-dir。我该如何让这个该死的东西将.eps文件转换为 pdf 以便gnuplottex可以包含它?有什么想法吗?

答案1

你必须修补\figname命令格努普特克斯,但现在gnuplot环境不能使用\figname,也需要修补这个

\usepackage{etoolbox}

\let\nodirfigname\figname
\def\figname{./tmp/\nodirfigname}

\expandafter\patchcmd\csname\string\gnuplot\endcsname
  {\figname}{\nodirfigname}{}{}

这种奇怪的修补方式\gnuplot是必要的,因为它是一个具有可选参数的命令。

代码必须在加载后执行格努普特克斯(当然\usepackage{etoolbox}之前可以去任何地方)。


更新

有了xpatch它更容易

\usepackage{xpatch}

\let\nodirfigname\figname
\def\figname{./tmp/\nodirfigname}

\xpatchcmd\gnuplot{\figname}{\nodirfigname}{}{}

相关内容