如何使用LaTeX在matplotlib中编写大写粗体斜体字母?

3

我希望在图表中显示图片1中的文本内容(摘自Daniel A. Steck的Rubidium 87 D Line Data第23页)。这是一个简单的等式,包含一个大写字母,在粗体和斜体下,使用Computer Modern字体。到目前为止,我已经尝试过:

import matplotlib.pyplot as plt
plt.rcParams["text.usetex"] = True
plt.rcParams["text.latex.preamble"].join([
    r"\usepackage{bm}",
    r"\usepackage{amsmath}"])


fig, ax = plt.subplots()

# Not bold
ax.text(0, 0.5, r"$F=0$", fontsize=18)

# Not italic
ax.text(0.2, 0.5, r"$\mathbf{F=0}$", fontsize=18)

# Not italic, not the correct font
ax.text(0.4, 0.5, r"\textit{\textbf{F}}=0", fontsize=18)

# Returns an error from LaTeX
ax.text(0.6, 0.5, r"$\bm{F}=0$", fontsize=18)

# Returns an error from LaTeX
ax.text(0.8, 0.5, r"$\boldsymbol{F}=0$", fontsize=18)

我正在使用pdfTeX,版本为3.141592653-2.6-1.40.23(TeX Live 2021/W32TeX)来显示方程式。


你遇到了哪个错误? - sarema
对于 \bm,我得到了以下错误:! Undefined control sequence. <recently read> \bm l.18 {\sffamily $\bm {F}=2$}我使用 \boldsymbol 时也遇到了类似的错误。 - johnc
2
我无法重现这个错误。请提供一个最小工作示例 - sarema
1
我可以重现这些错误。也许检查一下你的TeX安装是否有这些包,例如bm - Quang Hoang
2个回答

0

我找到了一种让它运行的方法。由于某些原因,导言部分没有正确设置。以下代码解决了这个问题:

import matplotlib.pyplot as plt
plt.rcParams["text.usetex"] = True
plt.rcParams["text.latex.preamble"] = r"\usepackage{bm}"

fig, ax = plt.subplots()
ax.text(0.6, 0.5, r"$\bm{F}\:\mathbf{=0}$", fontsize=18)

0

看起来你并不想实现任何 TeX 特定的东西,所以你可以通过调整 rcParams 和在调用 plt.text 时进行其余部分来完成所有操作。

>>> plt.rc('font', **{'family': 'serif', 'serif': ['Computer Modern']})
>>> plt.text(0,0,text.upper(), fontweight='bold', fontstyle='italic')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接