我重新打开了这篇帖子,它已经发布了一段时间,但还没有解决方案。我真的不记得这个问题的具体原因是什么了(当然,它gnuplot
不能正常工作)。所以我在这里写下我实际的问题,它和以前一样。
问题
我重新安装了操作系统(Mac OS X 10.8.2),安装了 MacTeX(最后一个),安装了 MacPorts 并gnuplot
通过它(在管理员帐户中)。在此帐户中,命令port
从终端(允许 mi install gnuplot
)正确运行,并且应用程序(从终端)也可以运行gnuplot
。然后创建了一个新的(非管理员)帐户,然后两者都不起作用port
。gnuplot
经过一些黑客攻击(这里有更多信息),我解决了。现在,port
可以gnuplot
从两个帐户的终端进行操作。
但问题是,我使用 TextMate 编译我的文档,它可以完美地编译所有内容。但如果我使用一些需要gnuplot
它的代码,它就无法调用它。请参阅底部的一些示例。
相反,如果我从终端调用该文件,pdflatex --shell-escape file.tex
那么它可以完美编译。
问题
发生了什么?这是 PATH 问题吗?我该如何解决?(我不太明白什么是 PATH,因此我无法自己尝试/想象)
代码和日志
示例 1:
\documentclass{scrartcl}
\usepackage{gnuplottex}
\begin{document}
\begin{gnuplot}
plot sin(x)
\end{gnuplot}
\end{document}
.log 文件的一部分
\openout3 = `Ejercicio1-gnuplottex-fig1.gnuplot'. Opening gnuplot stream Ejercicio1-gnuplottex-fig1.gnuplot runsystem(gnuplot Ejercicio1-gnuplottex-fig1.gnuplot)...executed. Package gnuplottex Warning: Conversion of Ejercicio1-gnuplottex-fig1.gnuplot fa iled. Package gnuplottex Warning: Please convert Ejercicio1-gnuplottex-fig1.gnuplot m anually.
并且终端没有任何错误。
示例 2:
\documentclass{scrartcl}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot gnuplot {sin(x)};
\end{axis}
\end{tikzpicture}
\end{document}
TextMate 的 .log 问题:
Latex 错误:./Ejercicio1.tex:6 包 pgfplots 错误:抱歉,无法找到 gnuplot-result 文件“Ejercicio1.pgf-plot.table”。也许您需要启用 shell-escape 功能?对于 pdflatex,这是“>> pdflatex -shell-escape”。您还可以在相应的 gnuplot 文件上手动调用“>> gnuplot .gnuplot”。
!包 pgfplots 警告:您的轴有空范围。用默认范围替换它并清除所有图表。
并且终端没有错误pdflatex --shell-escape file.tex
。
答案1
这可能是 TextMate 的一个问题PATH
,即不是PATH
(必然)与您从终端工作时相同。您可以通过在 TextMate 中打开一个新文件、输入行which gnuplot
,然后使用 Ctrl-R 运行该行来检查 TextMate 是否能够找到 gnuplot。如果 TextMate 给您一条错误消息,则它找不到 gnuplot;如果它打印目录名称,则它可以找到。
因此,假设 TextMate 找不到 gnuplot,最简单的解决方法是转到 TextMate 的“首选项”>“变量”,然后编辑 PATH 条目。您应该更改此设置,以便包含 gnuplot 的目录出现在列表中,例如
/usr/texbin:$PATH:/opt/local/bin:/opt/local/sbin:/opt/bin
可能对你有用。(你也必须保留$PATH
此列表,否则 TextMate 将无法使用许多重要命令。)确保选中 PATH 旁边的复选框。现在,如果你打开一个新文件并输入which gnuplot
,Ctrl-R,它应该会给你一些信息,如果你输入which pdflatex
,Ctrl-R,它应该会显示/usr/texbin
。
最后,您需要确保 TextMateshell-escape
使用选项运行 pdflatex。TextMate 允许您使用文档开头的注释将选项传递给 TeX 编译器。尝试添加此
%!TEX TS-options = --shell-escape
作为文件的第一行。如果我将此行作为第一行,您提供的两个示例都可以在我的计算机上顺利编译。(TextMate 2.0-alpha.9387)