10.8.2 中的 TextMate 2、PATH、--shell-escape 和 gnuplot 出现错误

10.8.2 中的 TextMate 2、PATH、--shell-escape 和 gnuplot 出现错误

我重新打开了这篇帖子,它已经发布了一段时间,但还没有解决方案。我真的不记得这个问题的具体原因是什么了(当然,它gnuplot不能正常工作)。所以我在这里写下我实际的问题,它和以前一样。

问题

我重新安装了操作系统(Mac OS X 10.8.2),安装了 MacTeX(最后一个),安装了 MacPorts 并gnuplot通过它(在管理员帐户中)。在此帐户中,命令port从终端(允许 mi install gnuplot)正确运行,并且应用程序(从终端)也可以运行gnuplot。然后创建了一个新的(非管理员)帐户,然后两者都不起作用portgnuplot经过一些黑客攻击(这里有更多信息),我解决了。现在,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)

相关内容