我似乎无法让该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}{}{}