我想在我的文档中使用 Tex Gyre Pagella 字体,但仅限于数学环境之外。我尝试设置数学字体,如以下代码所示:
% !TeX program = xelatex
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage[math-style=ISO]{unicode-math}
\setmainfont[
Extension=.otf,
UprightFont=*-regular,
ItalicFont=*-italic,
BoldFont=*-bold,
BoldItalicFont=*-bolditalic,
Numbers=OldStyle,
Scale=MatchLowercase
]{texgyrepagella}
\setmathfont{NewCMMath-Book.otf}
\begin{document}
This is some text that contains some \emph{italic text} and some \textbf{bold text} and some math: $x + y = z, \mathbf{x} + \mathbf{y} = \mathbf{z}$.
\end{document}
然而,加粗版本的数学仍然使用 Tex Gyre Pagella,而不是现代计算机。
作为参考,这是现代计算机中数学的显示方式:
如何才能\setmainfont
完全忽略数学环境中的一切?
此外,斜体版的 Tex Gyre Pagella 似乎比常规版的高度更低(见上面的截图)。是否可以缩放斜体版本以匹配常规高度?
非常感谢您的帮助!
答案1
我不确定你为什么要将 Computer Modern 数学与 Palatino 混合使用。斜体的问题在于Scale=MatchLowercase
永远不应该给出主字体的指令。
无论如何,解决方案是不要加载mathspec
与 LuaLaTeX 不兼容并且与较新版本的程序也有问题的代码fontspec
。
\documentclass{article}
\usepackage{amsmath}
%\usepackage{amsfonts}% not with unicode-math
\usepackage[math-style=ISO]{unicode-math}
\setmainfont[
Extension=.otf,
UprightFont=*-regular,
ItalicFont=*-italic,
BoldFont=*-bold,
BoldItalicFont=*-bolditalic,
Numbers=OldStyle,
]{texgyrepagella}
\setmathfont{NewCMMath-Book.otf}
\setmathrm{NewCM10-Regular.otf}[
BoldFont=NewCM10-Bold.otf,
]
\begin{document}
This is some text that contains some \emph{italic text} and some \textbf{bold text}
and some math: $x + y = z, \mathbf{x} + \mathbf{y} = \mathrm{z}$.
\end{document}
说实话,我发现输出相当丑陋。
答案2
使用mathspec
而不是unicode-math
使其工作:
% \usepackage[math-style=ISO]{unicode-math}
\usepackage{mathspec} %loads fontspec as well
\setmainfont[
Extension=.otf,
UprightFont=*-regular,
ItalicFont=*-italic,
BoldFont=*-bold,
BoldItalicFont=*-bolditalic,
Numbers=OldStyle,
Scale=MatchLowercase
]{texgyrepagella}
% \setmathfont{NewCMMath-Book.otf}