\dotsc 与 unicode 拉丁现代字体的奇怪行为

\dotsc 与 unicode 拉丁现代字体的奇怪行为

的间距\dotsc有点“奇怪”这里是 MWE:

\documentclass[10pt,a4paper,french]{article}

\usepackage{mathtools}
\usepackage{babel}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket},math-style=french]{unicode-math}
%\usepackage[StylisticSet=4]{fourier-otf}
\usepackage[scale={0.75,0.8},footskip=1.5cm,heightrounded]{geometry}

\begin{document}    
    $E=\{a_1,\dotsc,a_n\}$ et $a_1$, $\dotsc$, $a_n$
\end{document}

以下是我得到的结果: 在此处输入图片描述

如您所见,集合 E 内和集合外的点间距并不相同。当我使用 PdfLaTeX 时,间距相同。它似乎来自拉丁现代字体,因为如果我取消注释我注释的行,我会得到 Erewhon 字体: 在此处输入图片描述 点更好看(但这只是个人品味问题),间距也一样。事实上,当我放大时,间距似乎也不同。我尝试使用点和 ldot,但间距也不同。我做错了什么吗?

当我想到一位同事告诉我从 pdflatex 迁移到 lualatex 非常简单时,我不同意。符号varnothing已经改变,\setminus符号不可见,...

答案1

数学模式中的省略号(三个点)最初由 Knuth 在纯 TeX 宏中实现\ldots。插入三个点,每个点作为标点符号,即\tinmuskip三个点之间有一个。显式添加在最后一个点之后,因为点在宏中\thinmuskip声明为。该序列产生逗号 tm 点 tm 点 tm 点 tm 逗号(此处的 tm 表示)。因此,所有空格都相等。\mathinner\ldots$,\ldots,$\thinmuskip

Unicode 数学带来新消息:字体中有一个特殊字符 ... (unicodeellipsis,U+2026)。字体设计师通常不会在这些点之间插入相同的空格\thinmuskip,因为这是可拉伸的空间,这是不可能的\thinmuskip。unicodeellipsis 字符中字体中点之间的空格通常小于值\thinmuskip。您\thinmuskip在 ... 之前和之后有空格,但在 ... 字符内部没有空格。

您可以声明 \mathchardef\ldotp="602E(点作为标点符号)并在加载 Unicode 数学运算后保留\ldots纯 TeX 中的宏: 。然后,您便拥有纯 TeX 中定义的类似 Knuth 的相等空间。\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}

请注意,OpTeX 会将\ldots宏保留为与纯 TeX 类似的格式,用户可以使用它或者\unicodeellipsis使用字体中的单个字符...。

答案2

在集合符号中,你会得到一个狭窄的空间;在第二种情况下,你会得到一个正常的单词间空间:它们通常是不同的。在你声称它们是相同的例子中,它们也不同。

我们来比较一下:

\documentclass[10pt,a4paper,french]{article}

\usepackage{mathtools}
\usepackage{babel}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket},math-style=french]{unicode-math}
\usepackage[StylisticSet=4]{fourier-otf}
\usepackage[scale={0.75,0.8},footskip=1.5cm,heightrounded]{geometry}

\begin{document}    
    $E=\{a_1,\dotsc,a_n\}$ et $a_1$, $\dotsc$, $a_n$

\showoutput

\end{document}

日志文件中的相关部分是

....\TU/Erewhon-Math.otf(1)/m/n/10 ,
....\glue(\thinmuskip) 1.111
....\TU/Erewhon-Math.otf(1)/m/n/10 …

在点之前的第一个空格

....\TU/erewhon(0)/m/n/10 ,
....\glue(\spaceskip) 2.11 plus 1.05605 minus 0.70262
....\mathon
....\TU/Erewhon-Math.otf(1)/m/n/10 …

在点之前的第二个空格。

对于拉丁现代(注释掉fourier.otf),效果更明显,因为\spaceskip结果是

....\TU/lmr/m/n/10 ,
....\glue(\spaceskip) 3.33 plus 1.66666 minus 1.10889
....\mathon
....\TU/latinmodern-math.otf(1)/m/n/10 …

所以宽了 1.22pt。

第二次实验,与pdflatexErewhon 一起

\documentclass[10pt,a4paper,french]{article}

\usepackage{mathtools}
\usepackage{babel}
\usepackage[scale={0.75,0.8},footskip=1.5cm,heightrounded]{geometry}

\usepackage{erewhon}
\usepackage[utopia]{newtxmath}

\begin{document}    
    $E=\{a_1,\dotsc,a_n\}$ et $a_1$, $\dotsc$, $a_n$

\showoutput

\end{document}

相关部分是

....\glue(\thinmuskip) 1.66663
....\hbox(1.20999+0.025)x10.80322
.....\OML/zutmi/m/it/10 :
.....\glue(\thinmuskip) 1.66663
.....\OML/zutmi/m/it/10 :
.....\glue(\thinmuskip) 1.66663
.....\OML/zutmi/m/it/10 :
....\glue(\thinmuskip) 1.66663

第一个点之前的空格和

....\T1/erewhon-TLF/m/n/10 ,
....\glue 2.10999 plus 1.05605 minus 0.70226
....\mathon
....\hbox(1.20999+0.025)x10.80322
.....\OML/zutmi/m/it/10 :
.....\glue(\thinmuskip) 1.66663
.....\OML/zutmi/m/it/10 :
.....\glue(\thinmuskip) 1.66663
.....\OML/zutmi/m/it/10 :

在第二种情况下。同样,空间也不相同。

相关内容