Здесь есть две проблемы, одну из которых проще исправить, чем другую: первая проблема заключается в том, что "\b"
в вашем строковом литерале будет интерпретироваться как escape-строка на уровне Python: "\b"
является ASCIIсимвол возврата, так же, как "\t"
является символом табуляции. Вам нужно либо избежать обратной косой черты, чтобы она передавалась в LaTeX, либо использовать необработанную строку. Поэтому вам нужно заменить "$\bm{q}$"
на r"$\bm{q}$"
или "$\\bm{q}$"
.
Вторая проблема заключается в том, что по умолчанию математический рендеринг matplotlib использует библиотеку mathtext
, которая нене включает поддержку управляющей последовательности "\bm"
. Если вы хотите использовать пакеты LaTeX, не включенные в mathtext
, вы можете указать matplotlib использовать вашу локальную установку LaTeX для рендеринга математики вместо использования mathtext
. Это делается, например, с помощью:
from matplotlib import pyplot as plt
plt.rcParams['text.usetex'] = True
Затем необходимо убедиться, что используется пакет bm
. Для этого вам нужно изменить преамбулу LaTeX, которую использует matplotlib:
plt.rcParams['text.latex.preamble'] = [r'\usepackage{bm}']
Это, конечно, означает, что вам нужно иметь работающую установку LaTeX на вашем компьютере и ключевые исполняемые файлы (например, latex
, dvipng
и kpsewhich
) должны быть на вашем PATH
, чтобы matplotlib мог их найти.
После того, как вы все это сделали, рендеринг должен работать.
Вотполный автономный пример:
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 установкой):