Matplotlib乳胶工作目录/搜索路径

时间:2012-02-11 17:26:57

标签: latex matplotlib

运行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}

1 个答案:

答案 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')