newtx 与 TeX Live 2022 中的 fontspec 冲突

newtx 与 TeX Live 2022 中的 fontspec 冲突

升级到 TeX Live 2022 后,我发现很多以前的代码由于newtx和之间的冲突而无法正常工作fontspec。这是一个最小的例子(Windows 下的引擎是 XeLaTeX):

\documentclass[11pt]{article}
\usepackage{xeCJK}
\usepackage{newtxtext} % !!!
\usepackage{newtxmath} % !!!
\usepackage{fontspec}

\setsansfont{TeX Gyre Heros}
\setCJKmainfont{Noto Serif CJK SC}

\begin{document}
    \[ x^2+y^2=z^2 \]

    Test English.

    测试中文。
\end{document}

代码无法编译并显示错误:

! Package fontspec Error: The font "TeX Gyre Heros" cannot be found.
...
! Package fontspec Error: The font "Noto Serif CJK SC" cannot be found.

但是,如果我用 注释掉这两行!!!,那么它就可以编译。

通过这个 A/B 测试,我知道是 unicode-engine 的最新(官方)支持newtx破坏了我的代码,因为现在newtx使用fontspec。我试图传递,[nofontspec]newtx字体却是错误的。

这里到底发生了什么?有什么建议可以修复我的所有代码(我大量使用newtxfontspec而无需做太多工作吗?

答案1

newpx我最近也发现了和 的相同问题fontspec。请参阅这个问题(和回答newpx)。我给(和)的作者发了一封电子邮件,newtx但没有收到答复。

\defaultfontfeatures{}加载后添加newtx

答案2

除非您坚决致力于采用 xeCJK 方法,否则我建议您使用该unicode-math包并发布合适的\setmainfont\setsansfont\setmathfont指令。

由于您使用 Noto Serif SC 字体系列作为主(衬线)文本字体,因此我不会使用 Helvetica 作为主无衬线字体。相反,我会使用 Noto Sans SC 字体系列。如果您必须使用 Times Roman 克隆作为数学字体,我会放弃数学newtxmath字体,而是发出指令\setmathfont{Stix Two Math}

我使用 MacTeX2022 和 LuaLaTeX 编译了以下代码。

在此处输入图片描述

\documentclass[11pt]{article}
\usepackage{unicode-math}
\setmainfont{Noto Serif SC}
\setsansfont{Noto Sans SC}[Scale=MatchLowercase]
\setmathfont{Stix Two Math}[Scale=MatchLowercase]

\begin{document}
Test serif font. 

\textsf{Test sans-serif.} 

$x^2+y^2=z^2$.

测试中文。\quad \textsf{测试中文。}
\end{document}

相关内容