为什么在 LuaLateX 中切换到 ClearSans 字体会失败?

为什么在 LuaLateX 中切换到 ClearSans 字体会失败?

目前,我正在尝试使用无衬线字体来显示图形,并使用衬线字体来显示文档的其余部分。使用 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}

在此处输入图片描述

我真的不明白为什么无衬线字体的图表如此流行。

相关内容