使用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 上,结果如下:
在 MacTeX 2017 和 2018 上,它会生成以下使用拉丁现代数学表示 x 刻度和节点的图:
知道这些差异是由什么原因造成的吗?
答案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}