首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotllib和Xelatex

Matplotllib和Xelatex
EN

Stack Overflow用户
提问于 2015-09-22 19:41:51
回答 1查看 3.2K关注 0票数 3

一段时间以来,我一直试图为我的问题找到答案,但却想不出对我有用的东西。我的问题是:如何使用Xelatex在Matplotlib中编译文本?

我知道有这样一页:http://matplotlib.org/users/pgf.html

然而,我想不出一个可行的办法。我现在要做的是:

代码语言:javascript
复制
import matplotlib as mpl

mpl.use("pgf")

## TeX preamble
preamble = """
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
"""

params = {"text.usetex": True,
          'pgf.texsystem': 'xelatex',
          'pgf.preamble': preamble}

mpl.rcParams.update(params)

import matplotlib.pyplot as plt

plt.plot([1, 2, 3])
plt.xlabel(r'\textsc{Something in small caps}', fontsize=20)
plt.ylabel(r'Normal text ...', fontsize=20)

plt.savefig('test.pdf')

运行此代码将产生以下警告: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_pgf.py:51: UserWarning:从fc-list warnings.warn获取字体错误(“从fc-list获取字体错误”,UserWarning)

一个输出文件是创建的,但我不知道字体是错的(不是Libertine),尽管我已经安装了字体,并且能够在XeLaTex中使用它(我能够使用xelatex编写一个pdf文件,该文件设置在Libertine字体中)。

任何帮助都是非常感谢的..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 21:26:20

您的代码有几个问题:

  • 您需要使用以下选项:'pgf.rcfonts': False,将字体的控制权交给latex
  • 您还应该将unicode用于xelatex:'text.latex.unicode': True
  • “pgf.preamble”需要一个包含单个latex命令的python列表。
  • 如果您将字体设置为‘Libertine’,您可能需要serif字体,所以'font.family': 'serif'
  • 小心前导中的转义序列,您应该使其成为原始字符串。
  • 在文件开头添加一个unicode标记,并确保编码为utf-8。

使用此方法,您的代码将变成:

代码语言:javascript
复制
# -*- coding:utf-8 -*-
import matplotlib as mpl

mpl.use("pgf")

## TeX preamble
preamble = [
    r'\usepackage{fontspec}',
    r'\setmainfont{Linux Libertine O}',
]

params = {
    'font.family': 'serif',
    'text.usetex': True,
    'text.latex.unicode': True,
    'pgf.rcfonts': False,
    'pgf.texsystem': 'xelatex',
    'pgf.preamble': preamble,
}

mpl.rcParams.update(params)

import matplotlib.pyplot as plt

plt.plot([1, 2, 3])
plt.xlabel(r'\textsc{Something in small caps}', fontsize=20)
plt.ylabel(r'Normal text ...', fontsize=20)

plt.savefig('test.pdf')

结果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32725483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档