以下 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}