我正在使用带有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
这可能是许可问题还是其他什么问题?
答案 0 :(得分: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生成,但我可能错了。
答案 1 :(得分:1)
错误消息是为了您的利益!
! I can't write on file `test.aux'.
意味着LaTex正在尝试将某些内容写入文件'test.aux',但不能。最可能的原因是文件已被锁定,因为您将文件打开了其他内容。
您应该可以通过尝试删除该文件来检查这一点。一旦你解锁它你应该没事;最坏的情况,重新启动。