Резюме
Я экспортирую рисунки matplotlib как PGF для использования в LaTeX.
matplotlib добавляет \sffamily
дополнение к каждой текстовой записи (метки осей, метки, записи легенды, аннотации) при сохранении фигуры в виде PGF. Это остановит его от правильного наследования шрифта от шрифта глобального документа.
Текст может содержать шрифт из шрифта глобального документа, если он принадлежит к тому же семейству, но он вернется к шрифту sffamily по умолчанию, если глобальный шрифт принадлежит к другому семейству.
Куда я попал
Я считаю, что я изолировал проблему: если я отредактирую документ PGF и просто удаляю часть \sffamily
любой текстовой записи, проблема больше не будет сохраняться, и глобальный шрифт наследуется. Удаление не мешает LaTeX правильно его компилировать, и я не получаю ошибок.
Из-за вышеизложенного я считаю, что проблема не имеет ничего общего с rcParams
или какой-либо преамбулой LaTeX (как в python, так и в самом документе LaTeX).
MWE
Я только что попробовал это на простейшем из возможных сюжете и смог воспроизвести проблему:
import matplotlib.pyplot as plt
fig = plt.figure()
plt.xlabel('a label')
fig.savefig('fig.pgf')
И документ pgf будет содержать следующую строку:
\pgftext[x=3.280000in,y=0.240809in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont a label}%
, поэтому добавляется \sffamily
. Визуализация этого в LaTeX заставит шрифт без засечек. Удаление \sffamily
и его рендеринг позволит ему наследовать семейство шрифтов.
TLDR
Есть ли способ избежать включения семейства шрифтов в вывод PGF matplotlib?