重新定义 `unicode-math` 中的 `\mathcal` 后无法添加部分重音

2021-01-10 22:24发布

## 编译环境 - 操作系统 - [x] Windows 10 - [ ] Windows 8/8.1 - [ ] Windows 7 - [ ] 更早版本的 Windows -...

## 编译环境 - 操作系统 - [x] Windows 10 - [ ] Windows 8/8.1 - [ ] Windows 7 - [ ] 更早版本的 Windows - [ ] macOS - [ ] Linux(请附发行版) - TeX 发行版 - [x] TeX Live 2020 - [ ] MiKTeX - [ ] CTeX 套装 2.9.2.164 - [ ] 更早版本的 CTeX 套装 ## 描述问题 先提出我的产生问题的需求. 在使用 `unicode-math` 的过程中, 发现默认的 5 个字体中都不包含默认的 `\mathcal` 的样式, 文中指的默认样式如下 ```latex \documentclass{article} \begin{document} $ \mathcal{DBFT} $ \end{document} ``` ![defaultcal.jpg](https://i.loli.net/2021/01/10/eRV4xO3NESXBogu.jpg) 但是默认的 `unicode-math` 宏包的 `\mathcal` 的输出样式与 `\mathscr` 相同 ```latex \documentclass{article} \usepackage{unicode-math} \begin{document} $ \mathcal{DBFT}, \mathscr{DBFT} $ \end{document} ``` ![unimathcal.jpg](https://i.loli.net/2021/01/10/KmflFduQWw9Zyi6.jpg) 于是我在 StackExchange 上搜索到了一个[解决方法](https://tex.stackexchange.com/a/305501/180617), 如下 ``` \documentclass{article} \usepackage{unicode-math} \DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n} \begin{document} $ \mathcal{DBFT}, \mathscr{DBFT} $ \end{document} ``` ![unimathsolution.jpg](https://i.loli.net/2021/01/10/GWZpPu91S6Mq5HV.jpg) 但是这样做会产生一个新的问题, 即无法在 `\mathcal{}` 的字上无法添加部分重音(这里的部分是因为我只测试了会用到的 `\tilde` 与 `\hat`) ```latex \documentclass{article} \usepackage{unicode-math} \DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n} \begin{document} $ \tilde{\mathcal{B}} $ % $ \hat{\mathcal{B}} $ \end{document} ``` 会产生一个错误提示 ``` ! Internal error: bad native font flag in `map_char_to_glyph' ``` 目前可以使用 `\tilde{\text{$ \mathcal{B} $}}` 这样的方式来处理, 但是这未免看起来有一些蠢. 我的问题是: 有没有方法可以直接使用 `\tilde{\mathcal{B}}` 来在 `\mathcal` 上加重音. ## 最小工作示例(MWE) ```latex \documentclass{article} \usepackage{unicode-math} \DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n} \begin{document} $ \tilde{\mathcal{B}} $ % $ \hat{\mathcal{B}} $ \end{document} ``` (用 XeLaTeX 编译后)输出 ```latex ! Internal error: bad native font flag in `map_char_to_glyph' ```