更改 `\mathcal` 的字体后,我无法在 `\mathcal` 上添加重音

更改 `\mathcal` 的字体后,我无法在 `\mathcal` 上添加重音

我在使用的时候unicode-math发现,\mathcal给出的6种字体中并没有的默认表现texdoc unimath-symbols

\documentclass{article}
\begin{document}
    $ \mathcal{DBFT} $
\end{document}

上面的代码将输出

在此处输入图片描述

我发现,unicode-math性能\mathcal\mathscr

\documentclass{article}
\usepackage{unicode-math}
\begin{document}
    $ \mathcal{DBFT}, \mathscr{DBFT} $
\end{document}

在此处输入图片描述

我发现了一个解决方案在 TeX.SE 上:

\documentclass{article}
\usepackage{unicode-math}
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\begin{document}
$ \mathcal{DBFT}, \mathscr{DBFT} $
\end{document}

在此处输入图片描述

然而这又带来了一个新问题。我无法给字符添加\tilde重音:\mathcal

\documentclass{article}
\usepackage{unicode-math}
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\begin{document}
$ \tilde{\mathcal{B}} $

% $ \hat{\mathcal{B}} $
\end{document}

使用XeLaTeX编译后,出现错误:

! Internal error: bad native font flag in `map_char_to_glyph'

现在我可以用它\tilde{\text{$ \mathcal{B} $}}来解决这个问题,但是这个解决方案看起来很奇怪。

我的要求:

  1. 我想\mathcal在使用unicode-math包时使用 Computer Modern 的默认样式(本问题中的第一个图);

  2. 我想用\tilde{\mathcal{B}}直来强调\mathcal{B}

这是 GitHub 上的同一个问题(https://github.com/CTeX-org/forum/issues/179

答案1

您找到了与 不兼容的旧字体的解决方案unicode-math

由于 Unicode 将\mathcal和映射到相同的字符,因此只有在使用选项\mathscr加载新字体时,才能将它们设置为不同的字母表。例如,它对除和 之外的所有内容都使用 New Computer Modern Book ,它取自 STIX Two Math 的样式集:range=\setmathfont\mathscr\mathbfscr

\documentclass{article}
\usepackage{unicode-math}

\setmainfont{NewComputerModernBook}
\setmathfont{NewCMMath-Book}
\setmathfont{STIX Two Math}[
  range={scr,bfscr},
  Scale=MatchUppercase,
  StylisticSet=1 ]

\begin{document}
\[ \tilde{\mathcal{B}} \; \hat{\mathcal{B}} \; \mathscr{B} \]
\end{document}

手写字体样本

由于它现在从 OpenType 数学字体加载所有字母,因此数学重音符号可以正常工作。

相关内容