众所周知,Latin Modern Math 没有独立的粗体字体。如果您使用包加载 Latin Modern Math unicode-math
,并尝试使用\boldmath
,字体形状将被替换为常规字体。\boldmath
与unicode-math
命令\symbfit
&相比,一个最小工作示例\symbfup
如下,该命令可根据需要输出粗体 Latin Modern Math:
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\begin{document}
{\boldmath $a~A~\omega~\Omega$} \par
$\symbfit{a~A~\omega}~\symbfup{\Omega}$
\end{document}
编译器报告:
粗体拉丁现代数学字形来自 Unicode 块数学字母数字符号,如下所示(取自文档unicode-math
):
我的问题是:
我可以\boldmath
通过输出粗体 Unicode 字符来重新定义使其按预期运行吗?
提前回答“为什么你必须使用\boldmath
?”,是因为\boldmath
在开始使用之前,我已经在我的文档中用了很多了unicode-math
。我的主要用法是:
- 章节标题中的数学符号较粗,但以不干扰目录格式的方式实现。
\documentclass{article}
\makeatletter
\g@addto@macro\bfseries{\boldmath}
\makeatother
\begin{document}
\tableofcontents
\section{Bold math in section titles $a~A~\omega~\Omega$}
\subsection{But regular font in ToC $a~A~\omega~\Omega$}
\end{document}
- 将所有字符(包括运算符)变为粗体,而不仅仅是字母。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\boldmath $2\hat{a} + \tilde{b} = \sqrt{\dot{c}}$ \\
\unboldmath $2\hat{a} + \tilde{b} = \sqrt{\dot{c}}$
\end{document}
附言
- 如果可能的话,我还计划应用该解决方案
\bm
。 - 我开始使用它的原因
unicode-math
是我想导入一些来自其他字体的字形,比如来自 XITS Math、\mathscr
STIX Two Math、\mathbb
TeX Gyre Termes Math 等的积分。我可以通过其他一些方法实现这一点,但我不想不unicode-math
战而降。
答案1
我认为这不是一个好主意。只有一小部分数学子集具有粗体版本。最好使用 FakeBold:
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{Latin Modern Math}[version=bold,FakeBold={3}]
\begin{document}
$a~A~\omega~\Omega$ $\hat f(t) = \int_0^t \hat f'(x)\, dx$
{\boldmath $a~A~\omega~\Omega$ $\hat f(t) = \int_0^t \hat f'(x)\, dx$}
\end{document}