#python #matplotlib #latex
Вопрос:
Я использую LaTeX для визуализации текста в моих рисунках matplotlib. Когда я добавляю пакет siunitx в преамбулу LaTeX, некоторые текстовые элементы больше не выровнены правильно по вертикали.
Я только недавно столкнулся с этой проблемой: фигуры, которые ранее были отрисованы правильно, теперь разбиты. Это влияет на несколько сред python, поэтому я полагаю, что это может быть связано с последней версией siunitx?
Вот мой минимальный рабочий пример:
import numpy as np
import matplotlib.pyplot as plt
# Test data
x = np.linspace(0, 2*np.pi, 64)
y = np.sin(x)
# Use latex for text
plt.rcdefaults()
plt.rcParams['text.usetex'] = True
# Correctly behaving text
fig0, ax0 = plt.subplots()
ax0.plot(x, y, label='some string')
ax0.legend()
fig0.tight_layout()
fig0.savefig('without_siunitx.png')
plt.show()
# Use siunitx
plt.rcParams['text.latex.preamble'] = 'n'.join([
r'usepackage{siunitx}',
])
# Now some text has incorrect y position
fig1, ax1 = plt.subplots()
ax1.plot(x, y, label='some string')
ax1.legend()
fig1.tight_layout()
fig1.savefig('with_siunitx.png')
plt.show()
Для минимального рабочего примера я использую python 3.8.12, matplotlib 3.3.2 и siunitx 3.0.32 (установлен через MiKTeX) в Windows 10.
Два сгенерированных изображения png связаны ниже:
Вы можете видеть, что текст легенды и метки по оси y смещены после использования siunitx.
Я буду очень благодарен всем, кто может помочь мне решить эту проблему, так как это влияет на большинство цифр для моей диссертации. Большое спасибо!
Комментарии:
1. Можете ли вы попробовать с
usepackage{siunitx}[=v2]
2. @samcarter_is_at_topanswers.xyz, который исправил это, большое спасибо! Могу я спросить, что здесь делают квадратные скобки? Это мой первый вопрос о stackoverflow, могу ли я каким-то образом отметить ваш комментарий как правильный ответ?
3. Это синтаксис latex для отката к предыдущей версии, см. latex-project.org/publications/… подробнее
4. Если вы можете найти файлы LaTeX, которые не работают/создают проблему, вы, возможно, сможете помочь, разместив их (и эту проблему здесь) на tex.stackexchange.com — автор
siunitx
очень активен там.5. Что произойдет, если вы загрузитесь
usepackage{color}
вместо siunitx. Это тоже смещает текст?
Ответ №1:
Если это работало правильно раньше, вы можете откатиться к версии 2 siunitx со следующим синтаксисом:
usepackage{siunitx}[=v2]