为什么?

为什么?

我快要放弃了我的战斗为了Mn符号unicode 数学。我意识到我已经替换了这么多缺失和错误的字符,以至于 MnSymol 几乎已经所剩无几了。所以将来我可能会反过来,使用不同的数学字体,用 MnSymbol 替换我不喜欢的符号。


然而,在我将 MnSymbol 送入坟墓之前,请允许我问最后一个问题:

显然 MnSymbol 中缺少句号:

$\Bigg[\bigg(\big[ 42 \big]\bigg)\Bigg].$

在此处输入图片描述

当我用不同的字体替换句号时,所有括号后面都会跟着一个\cdot

\setmathfont[range={"002E} ]{XITS Math} 

在此处输入图片描述

如果我替换整个数学字体,这种情况就不会发生:

\setmathfont{XITS Math}

在此处输入图片描述


除了寻找解决方案之外,我实际上想知道

为什么?

我正在替换某个 Unicode 字符,其他字符也受到影响,这毫无意义


完整 MWE:

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmathfont{MnSymbol}
\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{Minion Pro}
\setmathfont[range={"005B,"005D,"0028,"0029,"007B,"007D} ]{XITS Math} % brackets

\begin{document}

$\Bigg[\bigg(\big[ 42 \big]\bigg)\Bigg].$
\setmathfont[range={"002E} ]{XITS Math}
$\Bigg[\bigg(\big[ 42 \big]\bigg)\Bigg].$
\setmathfont{XITS Math}
$\Bigg[\bigg(\big[ 42 \big]\bigg)\Bigg].$

\end{document}

备查:

可以找到完整的解决方案这里, 但

\Udelcodenum`.=1073741824 

需要更改为

\Udelcodenum`.=0

答案1

我改变了字体,但问题与字体无关。

输出\showlists显示,在第一种情况下,设置为从在经典 TeX 设置中用于文本的罗马字体中.拉出,就像用于和朋友一样,但罗马字符来自 Unicode 字体上平面的罗马字母,并且实际上显示为没有字符。.\fam0\fam0\logunicode-math\fam1\texfont0\nullfont

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmathfont{MnSymbol}
\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{Arial}
\setmathfont[range={"005B,"005D,"0028,"0029,"007B,"007D} ]{XITS Math} % brackets

\begin{document}
\showoutput
\showthe\textfont0
$\Bigg[\bigg(\big[ 42 \big]\bigg)\Bigg].\showlists$

\setmathfont[range={"002E} ]{XITS Math} 

$\Bigg[\bigg(\big[ 42 \big]\bigg)\Bigg].\showlists$

\setmathfont{XITS Math}

$\Bigg[\bigg(\big[ 42 \big]\bigg)\Bigg].$

\end{document}

相关内容