我有一个如下的 tex 文件:
\documentclass[]{article}
\usepackage{unicode-math}
\let\mathbf\symbfup
\let\emph\symbfup
\let\textbf\symbfup
% same result with other ways:
%\LetLtxMacro{\mathbf}{\symbfup}
%\renewcommand{\mathbf}[1]{\symbfup{#1}}
%\renewcommand{\mathbf}{\symbfup}
\begin{document}
\[
1.\mathbf\Omega 2.\emph\Omega 3.\textbf\Omega
\]
\end{document}
输出为:
从日志文件中可以看到Missing character: There is no
答案1
正确的做法是\usepackage[mathbf=sym]{unicode-math}
。请参阅手冊。
您不想重新定义\textbf
,因为这是一个 LaTeX 命令,它在文本和数学模式下都已经执行了其他操作,以这种方式重新定义它会导致粗体文本中断。同样,您也不想重新定义\emph
。获得所需内容的标准方法是\textnormal{\bfseries v}
。
如果要同时选择粗体文本和粗体数学,请使用\bfseries\boldmath
。然后加载带有粗体版本的 OpenType 数学字体,例如 XITS Math,或使用 声明一个\setmathfont[version=bold]{Some Font Math Bold}
。
为了回答您提出的字面问题,unicode-math
它的大部分定义都在序言的末尾(这使得它与其他包更兼容),因此您需要在里面重新定义它的大部分命令\AtBeginDocument
。