使用 epstopdf 时未找到 Gnuplot 子目录

使用 epstopdf 时未找到 Gnuplot 子目录

我从 gnuplot latex 终端转到 epslatex 终端。我使用 pdflatex。使用 epslatex 终端,我收到两个输出文件,一个 .tex 和一个 .eps。我可以使用 epstopdf 将 eps 文件转换为 pdf,并且我可以使用以下命令将图表包含到我的 latex 文件中:

\input{mygraph}

但是,我将每个图表放在单独的目录中。如果我使用:

\input{graphdir1/mygraph}

使用 latex 终端,一切都很好。但是,如果我使用 epslatex 终端并将 eps 文件转换为 pdf,我会收到一条错误消息:

[8] (./graphdir1/mygraph.tex

./graphdir1/mygraph.tex:101: LaTeX Error: File `mygraph' not found.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.101     \put(0,0){\includegraphics{mygraph}}

我有 graphdir1 和主 latex 文件在同一个目录中。我应该现在需要指定 latex 应在子目录中搜索吗?为什么我之前不需要这样做?

答案1

Gnuplot 的 epslatex 终端生成一个包含图形的封装 postscript 文件和一个包含一系列命令的 tex 文件,这些命令用于导入图形和添加标签等。当 TeX 尝试导入图形(无论是否转换为 pdf)时,就会出现问题。其中\includegraphics包含的命令mygraph.tex不包含其参数中的子目录名称,因此TeX会在“通常”的位置查找,包括包含主文档的目录,但不查找子目录。因此,第一个问题的答案是“是”(但请参阅下面的编辑)。

相比之下,gnuplot 的 latex 终端会生成一个 tex 文件,其中包含一系列使用图片环境绘制所有内容的命令。无需查找第二个文件,也不会出现任何问题。

编辑

Gnuplot 可以发出 shell 命令,因此您可以使用字符串替换实用程序来修复此问题。使用 sed,一个简单的 gnuplot 脚本如下所示。

set term epslatex
set output 'temp.tex'
plot x**3
set output #Closes the temporary output files.
!sed 's|includegraphics{temp}|includegraphics{graphdir1/mygraph}|' < temp.tex > mygraph.tex
!epstopdf temp.eps --outfile='mygraph.pdf'

这样,运行 gnuplot 后您无需编辑“mygraph.tex”,因为借助 sed,它将包含\includegraphics{graphdir1/mygraph}代替\includegraphics{temp}。作为奖励,图表的 pdf 版本会自动生成。

相关内容