如何将 newtxtext 和 newtxmath 与 XeLaTeX 结合使用?

如何将 newtxtext 和 newtxmath 与 XeLaTeX 结合使用?

是否有可能以某种方式使用 newtxtext 和 newtxmath 字体以及相应的 .sty 文件(按原样或修改后)(如果是后者,如何使用)——使用 XeLaTeX 而不是 pdfLaTeX?

我注意到:

  • newtxttext 主要使用 TeXGyre Termes,但也使用 TeXGyre Heros 作为无衬线字体,可能还使用一些其他字体;
  • newtxmath 使用 txmath 的数学字体,并进行了许多度量调整和其他修改

答案1

是的,你可以\usepackage{newtxtext, newtxmath}用 XeLaTeX 编写和编译。你可能会遇到与希腊字母相关的模糊错误\mathrm。(预计到达时间:评论者提出的连字符模式和非 ASCII 字符的错误比我所知道的要多。)

您还可以使用 中的 TeX Gyre Termes Math 字体unicode-math,它的外观与 非常相似newtxmath,但具有所有现代功能和更多字形选择。还有一种文本字体 TeX Gyre Termes X,专门基于 中对 Times 的调整txfonts。或者您可以半途而废,使用 OpenType 版本的 Times 以及fontspec中的数学运算newtxmath

还要注意的是,TeX 的新开发目前集中在 LuaTeX 上。有一些软件包仍然只能在 XeTeX 中使用,但在我需要的功能中,HarfBuzz 字体渲染今年终于添加到了 LuaTeX 中,ucharclasses无法使用,我更喜欢unicode-mathmathspec还有一些杂项软件包我可能需要 XeTeX 来处理,但多年来我一直在尽可能使用 LuaTeX,因为它对 的支持更好microtype

务实的解决方案

由于最好在 Unicode 引擎中使用 Unicode 字体,iftex因此如果必须同时支持两者,请使用检测您正在编译的系统类型。

\usepackage{iftex}
\ifTUTeX
   \usepackage{unicode-math}
   \defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
   \setmainfont{TeX Gyre Termes}[Scale=1.0]
   \setmathfont{TeX Gyre Termes Math}
\else
   \usepackage{amsmath, newtxtext, newtxmath}
\fi

应该很少有不兼容的情况。我见过的一个不兼容情况是 中的大写希腊字母,例如 Δ \mathrm,它恰好可以在 中使用newtxmath。在 中unicode-math,你可以使用\symup\Delta\upDelta来代替。

如果您出于某种原因想要使用newtxmath而不是unicode-math,则可以使用fontspecTeX newtxmathGyre Termes 作为主字体,mathastextmathspec,这也会为您提供数学模式下 OpenType 字体的字母。如果 XeTeX/LuaTeX 输出尽可能与 PDFTeX 输出相同很重要,请使用 TeX Gyre Termes X 作为主字体。

相关内容