我正在使用matplotlib及其pgf后端来生成包含在LaTeX Beamer文档中的图。使用未定义的乳胶命令时,我会遇到麻烦。但是对于我的应用程序,我不需要matplotlib来生成带有乳胶的标签或注释,我只想要正确的pgf输出,我将在我的投影仪文档上调用LaTeX。如果我要在笔记本中运行此代码,则希望在xlabel中有一个带有文字“ \ si {\ percent}”的图。
在下面的MWE中,当我使用注释行(使用\si{\percent}
)运行它时,matplotlib崩溃并发生了乳胶错误(“未知命令si”)。我不想使用matplotlib创建序言,我只希望pgf输出包含\ si {\ percent}命令...
如果我使用双反斜杠,则代码会通过,但是双反斜杠也会出现在pfg输出中,因此,乳胶无法识别该命令(我想它会换行)。
我不了解plt.rc('text',usetex = False)的“值”。我以为这会完全禁止调用LaTeX ...
import numpy as np
import matplotlib as mpl
mpl.use('pgf')
from matplotlib import pyplot as plt
from matplotlib import rc
plt.style.use('bmh')
plt.rc('pgf',rcfonts=False)
plt.rc('text', usetex=False)
x = np.linspace(0,100,101)
y = np.cos(x/100)*np.exp(-x/100)
plt.plot(x,y)
#plt.xlabel(r'value (\si{\percent})')
plt.xlabel(r'value (%)')
plt.savefig('test.pgf')
答案 0 :(得分:0)
您是否有理由不愿意加入序言?这样做可以轻松解决。以下对我有用:
import numpy as np
import matplotlib as mpl
mpl.use('pgf')
from matplotlib import pyplot as plt
pgf_with_latex = {
'text.usetex': False,
'pgf.rcfonts': False,
"pgf.preamble": [
r"\usepackage{siunitx}"
]
}
mpl.rcParams.update(pgf_with_latex)
plt.style.use('bmh')
x = np.linspace(0,100,101)
y = np.cos(x/100)*np.exp(-x/100)
plt.plot(x,y)
plt.xlabel(r'value (\si{\percent})')
plt.savefig('test.pgf')