如何在python(matplotlib)中的数学模式下编写粗体斜体?

问题描述 投票:0回答:1

我尝试过:

import matplotlib.pyplot as plt
from latex import bm
plt.text(1, 1, "$\bm{q}$")

错误:

ImportError: cannot import name 'bm'

当我在没有from latex import bm的情况下使用它时,它什么也没有提供,并且文件中的颜色很奇怪(b是黑色)

enter image description here

python-3.x matplotlib math latex
1个回答
1
投票

这里有两个问题,其中一个比另一个更容易解决:第一个问题是,字符串文字中的"\b"将被解释为Python级的字符串转义:"\b"是ASCII退格键字符,与"\t"是制表符一样。您需要转义反斜杠以使其传递到LaTeX,或使用原始字符串。因此,您需要将"$\bm{q}$"替换为r"$\bm{q}$""$\\bm{q}$"

[第二个问题是,默认情况下,matplotlib的数学渲染使用mathtext库,该库不包括对mathtext控制序列的支持。如果要使用"\bm"中未包含的LaTeX软件包,则可以指示matplotlib使用本地LaTeX安装来渲染数学,而不是使用mathtext。您可以这样操作,例如:

mathtext

然后您需要确保正在使用from matplotlib import pyplot as plt plt.rcParams['text.usetex'] = True 软件包。为此,您需要更改matplotlib使用的LaTeX序言:

bm

这当然意味着您需要在计算机上安装可正常运行的LaTeX,并且关键可执行文件(例如plt.rcParams['text.latex.preamble'] = [r'\usepackage{bm}'] latexdvipng)必须位于您的kpsewhich上,以便matplotlib可以找到他们。

一旦完成所有这些,渲染就应该起作用。

这是一个完整的独立示例:

PATH

这是当我在系统(装有标准from matplotlib import pyplot as plt plt.rcParams['text.usetex'] = True plt.rcParams['text.latex.preamble'] = [r'\usepackage{bm}'] plt.plot([0, 1, 2]) plt.text(1.5, 1, r"$\bm{testing}$") plt.show() 安装)上运行上述代码时看到的图像:

TeX Live

© www.soinside.com 2019 - 2024. All rights reserved.