运行latex时,Matplotlib似乎没有在当前工作目录中找到文件。有谁知道它在哪里查找文件?
背景是:我有一个巨大的序言,我\input
在处理之前进入乳胶(许多宏,各种usepackages等)。在一篇独立的论文中,我做\input{BigFatHeader.tex}
。因此,当我使用matplotlib时,我尝试在前导码中输入此文件。执行此操作的python代码是
matplotlib.rcParams['text.latex.preamble'].append(r'\input{BigFatHeader.tex}')
我可以验证该文件是否在cwd中 - 我在ls
时看到它,或者我可以执行os.path.isfile("BigFatHeader.tex")
并获得True。但是当我尝试用乳胶绘制一些东西时,python从乳胶工艺中吐出一个大错误信息,最终
! LaTeX错误:找不到文件BigFatHeader.tex
。
所以可能它会改变到其他目录(不是/tmp/
;我检查过)来完成它的工作。知道这可能在哪里吗?
我的最小工作示例是:
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['text.latex.preamble'] = r'\input{BigFatHeader.tex}'
matplotlib.rcParams['text.usetex'] = True
plt.plot([1,2])
plt.savefig('MWE.pdf')
BigFatHeader.tex
可能就像
\usepackage{bm}
答案 0 :(得分:8)
我在我的Ubuntu Lucid,matplotlib 1.1.0上遇到了同样的错误。 有两种选择:
给它一个完整的路径:
matplotlib.rcParams['text.latex.preamble'] = r'\input{/home/br/sweethome/temp/BigFatHeader}'
适合我。请注意,您没有为文件添加.tex
扩展名\input
。如果您不想对路径进行硬编码,可以使用os.getcwd()
:
import matplotlib
import matplotlib.pyplot as plt
import os
filename=r'\input{'+os.getcwd()+r'/BigFatHeader}'
matplotlib.rcParams['text.latex.preamble'] = filename
matplotlib.rcParams['text.usetex'] = True
plt.plot([1,2])
plt.savefig('MWE.pdf')
或者只需将您的文件读入文本字符串并使用它设置rcParams
。
import matplotlib
import matplotlib.pyplot as plt
paramstring=r'\usepackage{bm}'
matplotlib.rcParams['text.latex.preamble'] = paramstring
matplotlib.rcParams['text.usetex'] = True
plt.plot([1,2])
plt.savefig('MWE.pdf')