提问于:
浏览数:
2501
## 编译环境
- 操作系统
- [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'
```
2 回答
62
```
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{XITS Math}[
Scale = MatchUppercase ]
\setmathfont{Latin Modern Math}[
range = {cal,bfcal},
Scale = MatchUppercase ]
\begin{document}
\[ \tilde{\mathcal{B}} \quad \mathscr{ABC} \]
\end{document}
```
[https://tex.stackexchange.com/questions/578375/mathcal-incompatible-with-unicode-math/578378#578378](https://tex.stackexchange.com/questions/578375/mathcal-incompatible-with-unicode-math/578378#578378)
-
非常感谢! – 预言书 2021-01-23 10:03 回复
0
调用宏包mathalpha更方便一点,具体查看宏包文档.按下面这样调用就可以解决问题.
```
\usepackage[bb=ams,
scr=rsfs,
cal=euler]{mathalpha}
```
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。