0

我正在使用带有 Python 2.7 和 LaTeX 的 Ubuntu 服务器,我尝试使用 shell 命令编译这个 LaTeX 代码:pdflatex test.tex

\documentclass{article}

\usepackage{python}

\begin{document}

     \begin{python}
     print "Hello World"
     \end{python}

\end{document}

这很简单,因为这是我第一次尝试两者,但我收到以下错误消息:

(/usr/share/texmf/tex/latex/python/python.sty

Package: python 2007/06/07 v0.21 Python in LaTeX
\@out=\write3
\@module=\write4
) (./test.aux)

! I can't write on file `test.aux'.

\document ...ate \openout \@mainaux \jobname .aux          
\immediate \write \@mainau...
l.5 \begin{document}                   

(Press Enter to retry, or Control-D to exit; default file extension is `.tex')
Please type another output file name: 
! Emergency stop.
\document ...ate \openout \@mainaux \jobname .aux      

可能是权限问题还是其他什么?

4

2 回答 2

2

我对有问题的 LaTeX 包没有任何经验,但据我所知,它将尝试执行 python 片段并包含输出。尝试从 python 段中删除前导空格:

\begin{python}
print "Hello World!"
\end{python}

代替:

     \begin{python}
     print "Hello World!"
     \end{python}

多余的前导空格将导致 python 解释器抛出一个IndentationError可能是混淆 python.sty 的原因。粗略地看一下python.sty让我相信它会做以下 shell 命令会做的事情:

prompt$ echo '     print "Hello World!"' > test.py
prompt$ cat test.py | python > test.py.out 2> test.py.err

然后它会逐字包含test.py.out,这将是空的。标准错误输出将包含以下内容:

File "<stdin>", line 1
  print "Hello World!"
  ^
IndentationError: unexpected indent

在 sty 文件中提到他不应该忽略标准错误输出。我有一种感觉,如果python解释器退出失败,那么 LaTeX 永远不会生成输出,但我可能是错的。

于 2012-07-18T14:15:57.610 回答
1

错误消息是为了您的利益!

! I can't write on file `test.aux'.

表示 LaTex 正在尝试向文件“test.aux”写入内容,但不能。最可能的原因是文件被锁定,因为您在其他地方打开了它。

您应该能够通过尝试删除文件来检查这一点。解锁后应该没问题;最坏的情况,重启。

于 2012-07-18T13:34:24.350 回答