如何使用 xelatex PGF 后端强制使用 matplotlib 中的无衬线字体

如何使用 xelatex PGF 后端强制使用 matplotlib 中的无衬线字体

对于 matplotlib-xelatex 组合来说,这是一个稍微有点边缘的问题。

我在 matplotlib 的 png/pdf 输出中强制使用无衬线字体系列时遇到了问题。我想使用 tex 渲染以保持一致性,但出于技术原因,我想输出 png/pdf 图像而不是 PGF 输出。无论哪种方式,标签、刻度标签和图例的字体都是衬线字体,尽管我试图获取无衬线字体。

这是一个简单的例子:

from numpy import linspace
import matplotlib
matplotlib.use('pgf')
from matplotlib.pyplot import close, figure, rcParams

params = {
    'font.family': 'sans-serif',
    'font.sans-serif': 'Linux Biolinum',
    'text.usetex': True,
    'pgf.texsystem': "xelatex",
    'pgf.rcfonts': True,
    'text.latex.preamble': [
        r'\usepackage{libertine}',
        r'\usepackage{fontspec}',
        r'\setmainfont{Linux Biolinum}',
    ]
}
rcParams.update(params)
my_figure = figure()
x = linspace(-1, 1)
axes = my_figure.gca()
axes.plot(x, x**2, label='\\textrm{Re}')
axes.legend(loc='upper left', handlelength=2)
my_figure.savefig(
    'test.png',
    box_inches='tight',
    dpi=300)
close(my_figure)

相关内容