带有 LuaTeX 和 MacTeX 的 unicode-math 和 sans serif 字体

带有 LuaTeX 和 MacTeX 的 unicode-math 和 sans serif 字体

使用unicode-math我能够在数学模式下将无衬线字体与 LuaTeX 结合使用pgfplots。它仍然适用于 TeXLive 2016,但不适用于 MacTeX 2017 和 2018。

解决我的原始问题

\documentclass{scrartcl}
\usepackage{unicode-math}
\setmainfont[%
  BoldFont={MinionPro-Bold}%
  ,ItalicFont={MinionPro-It}%
  ,BoldItalicFont={MinionPro-BoldIt}%
  ,Numbers=OldStyle%
]{MinionPro-Regular}
\setsansfont[%
  Scale=MatchLowercase%
  ,BoldFont={MyriadPro-Bold}%
  ,ItalicFont={MyriadPro-It}%
  ,BoldItalicFont={MyriadPro-BoldIt}%
  ,Numbers=OldStyle%
]{MyriadPro-Regular}  
\setmathfont{MyriadPro-Regular}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  xbar,
  xlabel={a--d},
  symbolic y coords={a,b,c,d},
  ytick=data,
  nodes near coords, nodes near coords align={horizontal},
  ]
  \addplot coordinates {
    (45,a)
    (20,b)
    (1,c)
    (5,d)
    };
\end{axis}
\end{tikzpicture}
\end{document}

在 TeXLive 2016 上,结果如下:

使用 Myriad Pro 进行 pgfplot

在 MacTeX 2017 和 2018 上,它会生成以下使用拉丁现代数学表示 x 刻度和节点的图:

pgfplot 与拉丁现代数学

知道这些差异是由什么原因造成的吗?

答案1

使用文本字体作为数学字体是完全错误的。

如果您的刻度允许,最简单的解决方案是在文本模式下输入刻度(我使用 TeX Gyre Heros,因为我没有您的字体):

\documentclass{scrartcl}
\usepackage{unicode-math}
\setsansfont[]{TeX Gyre Heros}
\setmathfont{Latin Modern Math}

\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  tick label style={/pgf/number format/assume math mode=true},
  font=\sffamily,
  xbar,
  xlabel={a--d},
  symbolic y coords={a,b,c,d},
  ytick=data,
  nodes near coords, nodes near coords align={horizontal},
  ]
  \addplot coordinates {
    (45,a)
    (20,b)
    (1,c)
    (5,d)
    };
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容