无法使用 python.sty 包

无法使用 python.sty 包

编译.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 文件。 在此处输入图片描述

相关内容