编译.tex
使用python.sty
包并包含以下内容的文件时:
\begin{python}
...
\end{python}
我不断收到错误:
./main.tex:33:I can't find file 'bin/main.py.out' \end{python}
./main.tex:33:Emergency stop \end{python}
在使用PDFLaTeX
或仅使用 进行编译时都会发生这种情况LaTeX
。我尝试的是:
- 确保
-shell-enable
处于打开状态(或-enable-write18
在 Windows 上), - 找到另一份副本,
python.sty
以防我的版本无效, - 在 Windows 7 和 Debian 6 上尝试使用 Kile
python.sty
从网上复制并粘贴乳胶样本
以上任何方法都无法消除该错误。即使环境中有非常简单的 Python 代码,它也会失败,python
例如: 。如果我将环境内容留空,它也会失败,但会出现不同的错误。如果文档中没有环境,并且只有顶部,print "a"
它不会失败。我的副本取自python
\usepackage{python}
python.sty
这里。我尝试编译的简单示例代码也在那里。
我错过了什么?
答案1
python
以下是受包启发的环境定义python.sty
,但经过重写以在我的 Windows 系统上运行。基本上,它从和之间获取内容\begin{python}
,\end{python}
将其写入文件,将文件作为 Python 脚本执行,并将输出插入 LaTeX 文档。完整代码:
\usepackage{verbatim}
\makeatletter
\newwrite\Code@out
\newcommand\python{\obeylines\expandafter\pythonArg\noexpand}
\newcommand\pythonArg[1][tmp.py.in]{%
\gdef\FNameIn{#1}
\gdef\FNameOut{tmp.py.out}
\begingroup
\@bsphack%
\immediate\openout\Code@out\FNameIn%
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{%
\immediate\write\Code@out{\the\verbatim@line}}%
\verbatim@start}
\def\endpython{%
\immediate\closeout\Code@out\@esphack
\endgroup
%Execute python script. Python directory must be in PATH.
\immediate\write18{python \FNameIn > \FNameOut}
\input{\FNameOut}
}
\makeatother
答案2
这里运行良好。下面是 README 文件中的示例的输出。我确实删除了目录,bin/
这样我就不需要创建该文件夹了。也许你也可以试试。或者,尝试创建一个“bin/”目录,其中包含你的 LaTeX 文件。