使用 fontspec 时数字字体发生改变

使用 fontspec 时数字字体发生改变

以下 MWE

\documentclass[12pt]{amsbook}
\usepackage[T1]{fontenc}
\usepackage{mathtools}
\usepackage{newpxtext}
\usepackage{eulerpx}
\begin{document}           
$1234$
\end{document}

使用 pdfLaTeX(TeX Live 2022、Overleaf;数字由包提供eulerpx)编译时有正确的输出:

在此处输入图片描述

但是,当我用 LuaLaTeX(TeX Live 2022、Overleaf)编译以下修改版本时,数字的字体会发生变化(Computer Modern我猜是变成了 ):

\documentclass[12pt]{amsbook}
\usepackage{mathtools}
\usepackage{eulerpx}
\usepackage{fontspec}

% fontspec counterpart to \usepackage{newpxtext}
\setmainfont{TeXGyrePagellaX}[
Extension      = .otf ,
UprightFont    = *-Regular ,
BoldFont       = *-Bold ,
ItalicFont     = *-Italic ,
BoldItalicFont = *-BoldItalic ,
]

\begin{document}           
$1234$
\end{document}

在此处输入图片描述

有什么方法可以解决这个问题?也许通过添加额外的设置\setmainfont

答案1

我不确定为什么要加载eulerpx。无论如何,这是一个“有点工作”的东西。预计会出现重音问题。

\documentclass[12pt]{amsbook}
\usepackage{mathtools}
\usepackage{fontspec}
\usepackage{eulerpx}

\AtBeginDocument{%
  % fix eulerpx, but expect problems
  % Declare text font as operator font
  \DeclareSymbolFont{operators}{\encodingdefault}{\rmdefault}{m}{n}%
  \SetSymbolFont{operators}{bold}{\encodingdefault}{\rmdefault}{b}{n}%
  %\def\operator@font{\mathgroup\symoperators}
  % Declare text font as math alphabets
  \DeclareSymbolFontAlphabet{\mathrm}{operators}%
  \DeclareMathAlphabet{\mathsf}{\encodingdefault}{\sfdefault}{m}{n}%
  \DeclareMathAlphabet{\mathit}{\encodingdefault}{\rmdefault}{m}{it}%
  \DeclareMathAlphabet{\mathtt}{\encodingdefault}{\ttdefault}{m}{n}%
  \SetMathAlphabet{\mathsf}{bold}{\encodingdefault}{\sfdefault}{b}{n}%
  \SetMathAlphabet{\mathit}{bold}{\encodingdefault}{\rmdefault}{b}{it}%
  \SetMathAlphabet{\mathtt}{bold}{\encodingdefault}{\ttdefault}{b}{n}%
  \DeclareMathAlphabet{\mathbf}{\encodingdefault}{\rmdefault}{b}{n}%
}

% fontspec counterpart to \usepackage{newpxtext}
\setmainfont{TeXGyrePagellaX}[
  Extension      = .otf ,
  UprightFont    = *-Regular ,
  BoldFont       = *-Bold ,
  ItalicFont     = *-Italic ,
  BoldItalicFont = *-BoldItalic ,
]

\begin{document}

$1234$

\end{document}

我们需要延迟设置eulerpx,并删除所有提及OT1

答案2

如果您想要TeXGyrePagellaX文本字体和Euler数学字体,您可以尝试euler-math使用 LuaLaTeX 包:

 \documentclass[a4paper,12pt]{article}
 \usepackage{mathtools}
 \usepackage{euler-math}
 \setmainfont{TeXGyrePagellaX}[
   Extension      = .otf ,
   UprightFont    = *-Regular ,
   BoldFont       = *-Bold ,
   ItalicFont     = *-Italic ,
   BoldItalicFont = *-BoldItalic ,
 ]
 \begin{document}
  $1234\quad (x+y)(x-y) = x^2 - y^2$
 \end{document}

在此处输入图片描述

相关内容