我在尝试将使用终端创建的图形文件包含到我的乳胶文档中时遇到了一个非常非常奇怪的问题gnuplot
epslatex
。
我创建了一个gnuplot
脚本,它使用epslatex
终端并将输出写入名为的文件foo.tex
。正如预期的那样,它输出两个文件:foo.eps
和foo.tex
。在我的 latex 文件中,paper.tex
我使用以下命令将其包含foo.tex
在一个图中:
\begin{figure}[ht]
\input{foo.tex}
\end{figure}
然后我使用以下命令编译 latex 文件:
latex paper.tex
然后我使用以下命令将该文件转换paper.dvi
为.ps
文件:
dvips paper.dvi
然后我尝试.pdf
使用以下命令将其转换为文件:
ps2pdf paper.ps
但它失败了,并出现了一条对我来说毫无意义的错误消息,.pdf
当我使用.pdf
查看器时,我无法查看文件中的图。以下是错误消息:
Error: /syntaxerror in /--%ztokenexec_continue--
Operand stack:
ExtendTextBox
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 2045 1 3 %oparray_pop 2044 1 3 %oparray_pop 2025 1 3 %oparray_pop 1884 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval--
Dictionary stack:
--dict:960/1684(ro)(G)-- --dict:1/20(G)-- --dict:90/200(L)-- --dict:198/300(L)-- --dict:67/200(L)-- --dict:181/256(L)--
Current allocation mode is local
GPL Ghostscript 9.26: Unrecoverable error, exit code 1
现在到了真正奇怪的部分。经过很多挫折(很多小时),我意外地发现,如果我运行gnuplot
脚本但写入屏幕(即我注释掉设置终端的部分epslatex
,我注释掉将输出写入文件的部分),然后我重试该ps2pdf
命令,它就会工作,我可以在文件中查看情节.pdf
。
这对我来说完全没有意义!看来运行脚本gnuplot
并绘制到屏幕上会foo.tex
在创建 foo.eps 之后修复其中的某些问题。发生了什么?
答案1
问题是文件由 gnuplot 保持打开状态以等待数据,如果您需要使用创建的文件,则必须使用 set output 命令关闭该文件,然后使用 set term pop 命令返回前一个设备
答案2
解决该问题的方法(感谢 Marijn)是在 gnuplot 脚本末尾包含以下行:
unset output
但是我不明白在文件 foo.tex 和 foo.eps 已经写入后,如何将绘图绘制到屏幕上也能解决问题。这对我来说仍然是个谜。GnuPlot 是否设置了 ps2pdf 使用的系统变量?有些地方有问题。