krg*_*krg 9 latex matplotlib pgf
我将 matplotlib 图形导出为 PGF 以在 LaTeX 中使用。
\sffamily将图形保存为 PGF 时,matplotlib 似乎为每个文本条目(轴标签、刻度、图例条目、注释)添加了一个附加项。这将阻止它从全局文档字体正确继承字体。
如果文本来自同一个家族,文本可以从全局文档字体继承字体,但如果全局字体来自不同的家族,它将恢复为默认的 sffamily 字体。
我相信我已经隔离了这个问题:如果我编辑 PGF 文档并简单地删除\sffamily任何文本条目的一部分,问题不再存在并且全局字体被继承。删除不会阻止 LaTeX 正确编译它,并且我没有收到任何错误。
由于上述发现,我认为问题与rcParams任何 LaTeX 前言(无论是在 python 中还是在实际的 LaTeX 文档中)无关。
我只是在最简单的情节上进行了尝试,并且能够重现该问题:
import matplotlib.pyplot as plt
fig = plt.figure()
plt.xlabel('a label')
fig.savefig('fig.pgf')
Run Code Online (Sandbox Code Playgroud)
并且 pgf 文档将包含以下行:
\pgftext[x=3.280000in,y=0.240809in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont a label}%
Run Code Online (Sandbox Code Playgroud)
所以\sffamily添加了。在 LaTeX 中渲染它会强制使用 sans-serif 字体。删除\sffamily并渲染它将允许它继承字体系列。
有没有办法避免在 matplotlib 的 PGF 输出中包含字体系列?
我无法提供解决方案,只能提供基于 @samcarter 评论的解决方法:您可以\sffamily在本地重新定义,例如:
\documentclass{article}
\usepackage{pgf}
\usepackage{fontspec}
\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
\begin{document}
Lorem ipsum {\sffamily Lorem ipsum}
\begin{center}
\renewcommand\sffamily{}
\input{fig.pgf}
\end{center}
Lorem ipsum {\sffamily Lorem ipsum}
\end{document}
Run Code Online (Sandbox Code Playgroud)
center您可以使用任何环境 或\begingroup和来代替\endgroup。
| 归档时间: |
|
| 查看次数: |
893 次 |
| 最近记录: |