解决使用 unicode-math 宏包情况下 \mathbb 黑板体字符的显示问题

最近需要使用实数集数学符号 R 时,注意到在 LaTeX 中的显示方式有些奇怪,如下图所示,符号本应该是右边的空心字,但是却显示成为了左侧字体,经过查阅资料,该问题是由于 unicode-math 宏包加载的字体为 lmroman10-regular,该字体中的黑板体 R 确实为左侧字符,在没有使用 unicode-math 宏包的情况下,该字体由 amssymb 宏包提供,对应的字体文件为 msbm10,由于 Latin Modern 的字体样式与内置的数学字体符号不同导致了显示效果的差异。

解决方案

在未引入 unicode-math 宏包前重新定义 mathbbmathbbalt,缺点是丢失了 Unicode Math 的特性,从 PDF 中复制出的字符为字母 R。

1
2
3
4
5
6
7
8
9
10
\documentclass{article}
\usepackage{amssymb}
\let\mathbbalt\mathbb
\usepackage{unicode-math}
% \let\mathbb\mathbbalt % UNIVERSAL RESET TO ORIGINAL \mathbb
\begin{document}
\begin{equation}
\mathbb{R}\quad\mathbbalt{R} % OR JUST CALL ON INDIVIDUAL ORIGINAL GLYPHS
\end{equation}
\end{document}

另一种方案是为 \mathbb 更换字体,TeX Gyre Pagella Math 中提供了黑板体的支持,该方案不会丢失 Unicode Math 的特性。

1
2
3
4
5
6
7
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{LatinModernMath-Regular}
\setmathfont[range=\mathbb]{TeXGyrePagellaMath-Regular}
\begin{document}
$\forall x \in \mathbb{R}$
\end{document}

上述代码产生下面的效果

参考文献