我已經接近放棄我的戰鬥為了錳符號在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}