当我使用LaTeX渲染文本时,为什么python变得无法响应?

时间:2017-01-11 21:08:12

标签: python matplotlib compiler-errors latex freeze

我目前正在使用python 2.7.11command prompt中运行我的代码。我正在使用matplotlib为我的LaTeX文档创建3D数字。但是,当我尝试使用LaTeX呈现图像的文本时,我收到一条Windows错误消息,告诉我python.exe已停止工作,我必须关闭该程序。为什么会发生这种情况,我该如何解决?我不懂技术,所以简单的答案将不胜感激。提前谢谢。

代码

此错误的最小代码为:

from mpl_toolkits.mplot3d import Axes3D
import numpy, matplotlib, matplotlib.pyplot as pyplot

matplotlib.rcParams['text.usetex'] = True

Module_Colour = '#F0AE1E'

fig = pyplot.figure()
ax = fig.add_subplot(111, projection='3d')

X_arr = numpy.array([1.0,0.0,0.0])
Y_arr = numpy.array([0.0,1.0,0.0])
Z_arr = numpy.array([0.0,0.0,1.0])
O_arr = numpy.array([0.0,0.0,0.0])

pyplot.quiver(O_arr,O_arr,O_arr,X_arr,Y_arr,Z_arr,
              pivot='tail', length=1.0, linewidth=2.5,
              color = Module_Colour)

pyplot.savefig('C:/Users/alexd/Documents/University/Physics/Physics Figures/fig.jpeg', bbox_inches='tight')
pyplot.show()

1 个答案:

答案 0 :(得分:2)

请注意,pyplot.show() 会阻止,直到您关闭窗口。

如果要为LaTeX文档生成图表,只需删除pyplot.show()

确保Python实际上找到 latexdvipnggs。 (如果不是这样的话,我希望你得到一条错误信息,但我还没有在ms-windows上使用python / matplotlib,所以我不确定。)也就是说,它们的位置应该是在您的PATH环境变量中。请参阅matplotlib documentation on environment variables

在交互式Python会话中尝试以下操作:

>>> import subprocess
>>> subprocess.call(['latex', '--version'])
pdfTeX 3.14159265-2.6-1.40.17 (TeX Live 2016)
kpathsea version 6.2.2
Copyright 2016 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.21; using libpng 1.6.21
Compiled with zlib 1.2.8; using zlib 1.2.8
Compiled with xpdf version 3.04
0

关于TeX版本的东西可能会有所不同;这取决于您使用的TeX发行版的版本。 最重要的是最后一行;这是subprocess.call的返回值,应该为0,表示该命令没有返回错误。

如果subprocess.call引发异常(如下所示;不确定ms-windows上是否相同),则需要修改PATH以便python可以找到LaTeX和其他它需要的东西。

>>> subprocess.call(['foo', '--version'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/subprocess.py", line 168, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/local/lib/python2.7/subprocess.py", line 390, in __init__
    errread, errwrite)
  File "/usr/local/lib/python2.7/subprocess.py", line 1024, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

修改 如果这不是问题,可能就是TeX没有退出。尝试运行脚本。当您收到错误对话框时,如果仍有(la)tex进程正在运行,请查看任务管理器。查看您使用的LaTeX代码,并尝试在LaTeX中运行它以检查它是否实际有效。它可能会因错误而挂起......