我正在尝试将衬线字体与latex一起使用matplotlib,不幸的是,它不会显示在Acrobat Reader中,但在Internet Explorer或Chrome上是可以的。我的最小代码生成一个错误StandardSymL_Sland_167找不到,varepsilon不可见,缺少什么
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams.update(mpl.rcParamsDefault)
mpl.rcParams['text.usetex'] = True
mpl.rcParams['font.family'] = ['serif']
mpl.rcParams['font.serif'] = ['times']
fig, ax = plt.subplots()
ax.set_xlabel(r'$x$ $\alpha \varepsilon$')
fig.savefig('test.pdf')
我的环境的输出是:
import matplotlib
print(matplotlib.__version__)
3.2.0
编辑 我觉得这也很奇怪:
pdffonts test.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
NimbusRomNo9L-Regu Type 1 Custom yes no no 21 0
CMMI10 Type 1 Builtin yes no no 13 0
NimbusRomNo9L-ReguItal Type 1 Custom yes no no 25 0
StandardSymL_Slant_167 Type 1 Builtin yes no no 17 0
这不是一个很好的解决方案,但我不确定除了在文本编辑器中手动编辑生成的pdf之外,是否还有其他解决方案。这似乎是Adobe Acrobat解析器导致的错误,因为matplotlib输出双精度数字,而Type 1字体仅支持单精度
相关问题似乎将在即将发布的matplotlib 3.4.0版本中修复: https://github.com/matplotlib/matplotlib/issues/16087
修复程序已经合并,因此更新到最新的主程序(例如使用
pip install git+https://github.com/matplotlib/matplotlib.git@master
)应该可以修复它据我所知,希腊字体的问题。 有趣的是,win操作系统通常会出现问题
请尝试win-adapted版本:
相关问题 更多 >
编程相关推荐