為什麼?

為什麼?

我已經接近放棄我的戰鬥為了錳符號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顯示,在第一種情況下,.設定.為從\fam0在經典的 TeX 設定中\fam0提取用於文字的羅馬字體,如用於\log和 朋友,但unicode-math羅馬字元來自 Unicode 上平面的羅馬字母中的字體\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}

相關內容