XeLaTeX:如何在数学之外使用 Tex Gyre Pagella 以及如何增加其斜体版本的高度

XeLaTeX:如何在数学之外使用 Tex Gyre Pagella 以及如何增加其斜体版本的高度

我想在我的文档中使用 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}

相关内容