目前,我正在尝试使用无衬线字体来显示图形,并使用衬线字体来显示文档的其余部分。使用 MWE 进行编译时,pdflatex
一切似乎都运行顺利。切换到lualatex
(在 Texlive 2014 上)会导致错误消息(Font shape OT1/ClearSans(0)/m/sl undefined
),提示无法找到某些字符,并且它们会被标准衬线字体替换。
为什么在这种情况下字体处理会有所不同?我该如何解决这个问题?
\documentclass{article}
\usepackage{pgfplots}
\usepackage{ClearSans}
\usepackage[eulergreek]{sansmath}
\pgfplotsset{
tick label style = {font=\sansmath\sffamily},
every axis label = {font=\sansmath\sffamily},
legend style = {font=\sansmath\sffamily},
label style = {font=\sansmath\sffamily},
/tikz/font=\sansmath\sffamily
}
\begin{document}
\begin{figure}
\begin{sansmath}
\begin{tikzpicture}
\begin{axis}
\addplot [blue] coordinates { (0,0) (1,2) };
\end{axis}
\node at (4, 1) { $\Delta T_{\mathrm S} + 25 + \alpha + \beta + a^2$};
\node at (2, 5) {normal sans serif text};
\end{tikzpicture}
\end{sansmath}
\caption{Some caption text.}
\end{figure}
text text text...
\begin{equation}
a^2 + b^2 = c^2
\end{equation}
\end{document}
答案1
确实sansmath
\providecommand\sansmathencoding{OT1}
在开始时;可以通过添加来覆盖
\newcommand\sansmathencoding{\encodingdefault}
在加载包之前。您还必须确保fontspec
不会劫持数学代码并修复另一个设置,其中sansmath
硬连线OT1
。对于大写希腊文,EULERGREEK
需要。
\documentclass{article}
\usepackage{pgfplots}
\usepackage[no-math]{fontspec}
\usepackage{ClearSans}
\newcommand{\sansmathencoding}{\encodingdefault}
\usepackage[EULERGREEK]{sansmath}
\SetSymbolFont{operators}{sans}{\encodingdefault}{\sfdefault}{m}{n}
\pgfplotsset{
tick label style = {font=\sansmath\sffamily},
every axis label = {font=\sansmath\sffamily},
legend style = {font=\sansmath\sffamily},
label style = {font=\sansmath\sffamily},
/tikz/font=\sansmath\sffamily
}
\begin{document}
\begin{figure}
\centering
\begin{sansmath}
\begin{tikzpicture}
\begin{axis}
\addplot [blue] coordinates { (0,0) (1,2) };
\end{axis}
\node at (4, 1) { $\Delta T_{\mathrm{S}} + 25 + \alpha + \beta + a^2$};
\node at (2, 5) {normal sans serif text};
\end{tikzpicture}
\end{sansmath}
\caption{Some caption text with math $\Delta T_{\mathrm{S}} + 25 + \alpha + \beta + a^2$.}
\end{figure}
text text text...
\begin{equation}
a^2 + b^2 = c^2
\end{equation}
\end{document}
我真的不明白为什么无衬线字体的图表如此流行。