我喜欢《New Computer Modern》书本重量版本的厚度。但是,《New Computer Modern》似乎需要 unicode-math,这会以我不喜欢的方式更改一些数学排版。例如,a_1, \dots, a_m如下所示:

(拉丁现代)

生成使用:

\documentclass{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}

\begin{document}

\[a_1, \dots, a_m\]

\end{document}

(新计算机现代,书本重量)

生成使用:

\documentclass{article}

\usepackage[default]{fontsetup}

\begin{document}

\[a_1, \dots, a_m\]

\end{document}

除了该fontsetup行之外,我还尝试使用:

\usepackage{newcomputermodern}

还有:

\usepackage{fontspec}
\setmainfont[
    Extension      = .otf,
    Ligatures      = TeX,
    BoldFont       = NewCM10-Bold,
    ItalicFont     = NewCM10-BookItalic,
]{NewCM10-Book}
\usepackage{unicode-math}
\setmathfont{NewCMMath-Book}

但输出(至少对我来说)与fontspec版本没有区别。

在 New Computer Modern 版本中,点看起来很拥挤,而且下标看起来也太低了(尤其是m,它几乎完全在 之下a)。我相信发生这种情况是因为为了加载数学字体,New Computer Modern 引入了 unicode-math。

有没有办法使用新计算机现代字体的粗细,但保留所有的数学排版,就像拉丁现代字体一样,比如不加载 unicode-math 或告诉 unicode-math 返回“经典”数学排版?

(我正在使用 TeX Live 2024 和 LuaLaTeX,以防万一。)

8

  • 您能否提供这两个示例的代码。例如,您的 Latin Modern 示例中的三个点看起来与 Open Type 字体中的三个点不同。此外,下标的垂直位置可以通过字体参数控制。


    – 

  • 1
    欢迎!您能否提供我们可以编译的代码来生成您展示的每个示例?LM 示例使用的是 opentype 字体还是 7 位设置?


    – 

  • @mickep 它肯定接近 7 位输出。并且 lm 点在 opentype 中看起来完全不同 – 类似于此处显示的新 cm,但没有那么重。


    – 

  • 1
    如果您使用的是 NewComputerModern 书籍变体,则建议为数学字符加载 NewCMMath-Book 字体。此数学字体是 Unicode。如果您想保留旧的 7 位数学和书籍文本变体,那么数学字符将不是“书籍”,因为经典的 Computer Modern 7bit 中不存在这种变体。正如您所注意到的,unicode 数学字体的下标位置有不同的度量。这可以被覆盖(取决于使用的是 LuaTeX 还是 XeTeX)。这\dots是一个简单的宏,可以像在原始纯 TeX 中一样毫无问题地定义。


    – 


  • @mickep 和 cfr 我已经添加了生成图像的代码。抱歉疏忽了;我以为我的示例足够简单,不需要提供代码,但显然我错了。


    – 


最佳答案
2

这其实与字体选择无关unicode-math。一个是使用字体中的省略号,另一个是使用三个间隔的点。您可以轻松恢复原始版本。

\documentclass{article}


\AtBeginDocument{%
  \NewCommandCopy\Xmathellipsis\mathellipsis
  \RenewDocumentCommand\mathellipsis{}{\mathinner {\ldotp \ldotp \ldotp }}%
  }
\usepackage[default]{fontsetup}

\begin{document}



\[a_1, \dots, a_m, \mathellipsis, a_2, \Xmathellipsis, a_3 \]

\end{document}

我们可以在 OpTeX 中做什么:

\loadmath{NewCMMath-Book}
\fontfam[newcm]
\book\rm
\Umathsubshiftdown\textstyle=1.5pt
\Umathsubshiftdown\displaystyle=1.7pt

Test: $a_1\dots a_m$.

$$
   a_1\dots a_m
$$

\bye

加载了用于 Unicode 数学的 NewCMMath-Book 字体并\book使用了文本字体的变体。

您可以看到\dots宏未在 OpTeX 中重新定义,我们不需要对它进行任何操作。另一方面,下标位置由\UmathsubshiftdownLuaTeX 原语纠正(OpTeX 仅与 LuaTeX 一起运行,因此我们不需要为 XeTeX 创建替代解决方案)。