Я пытался использовать собственную преамбулу LaTeX с matplotlib, но это вызывает затруднения.
ValueError: Key text.latex.preamble: Could not convert ['\\usepackage{siunitx}' ...] to str
По какой-то причине \ конвертируются в \\, но я не понимаю почему. Я использую Python версии 3.11.5 и Matplotlib версии 3.7.2.
Вот MWE (на основе этого поста):
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['text.usetex'] = True
rcParams['text.latex.preamble'] = [
r'\usepackage{siunitx}', # i need upright \micro symbols, but you need...
r'\sisetup{detect-all}', # ...this to force siunitx to actually use your fonts
r'\usepackage{helvet}', # set the normal font here
r'\usepackage{sansmath}', # load up the sansmath so that math -> helvet
r'\sansmath' # <- tricky! -- gotta actually tell tex to use!
]
fig, ax = plt.subplots()
fig.show()






rcParams ожидает строку. Ниже я объединил элементы вашего списка строк с помощью символов новой строки.
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['text.usetex'] = True
rcParams['text.latex.preamble'] = '\n'.join([
r'\usepackage{siunitx}', # i need upright \micro symbols, but you need...
r'\sisetup{detect-all}', # ...this to force siunitx to actually use your fonts
])
fig, ax = plt.subplots()
plt.xlabel(r'$a=\SI{12}{\kg}$')
fig.show()
Обратите внимание, что \kg — это макрос, определенный SUInitx.
PS я опустил несколько пакетов, которые не устанавливал.
@mapf Я не знаю, но как это работает сейчас, четко указано в полученном вами сообщении об ошибке ValueError: Key text.latex.preamble: Could not convert ['\\usepackage{siunitx}' ...] to str.
@mapf Я бегло просмотрел, похоже, что-то изменилось между 2015 и 2017 годами, судя по разным ответам по этой теме. Не воспринимайте мои слова как категоричные…
Понятно, спасибо и не беспокойтесь!
Большое спасибо! Итак, после того поста, из которого я скопировал команду,
matplotlibизменился способ работы'text.latex.preamble'?