bm导致粗体字体未定义问题

bm导致粗体字体未定义问题
\documentclass[a4paper]{article}

\usepackage[no-math]{fontspec}

\usepackage{anyfontsize}
\usepackage{amsmath,amssymb,amsthm,mathrsfs}

\setmainfont{Times New Roman}
\usepackage{unicode-math}
\setmathfont{Asana-Math.otf}
\usepackage{bm}
\renewcommand{\bm}{\symbf}


\title{Title}
\author{Author}
\date{\today}

\begin{document}

    \maketitle

\end{document}

这会导致警告

Font shape `TU/Asana-Math.otf(1)/b/n' undefined
(Font)  using `TU/Asana-Math.otf(1)/m/n' instead.

但如果我删除了

\usepackage{bm}
\renewcommand{\bm}{\symbf}

警告消失了。

为什么?如何解决?

答案1

我的解决方案是不使用\bm并直接替换它\mathbf

\usepackage[no-math]{fontspec}
\setmainfont{TeX Gyre Pagella}
\usepackage[scr=rsfso,frak=euler,bb=ams]{mathalpha}
\usepackage[bold-style=ISO,sans-style=italic]{unicode-math}
\setmathfont{Asana Math}
\AtBeginDocument{
  \let\uglymathbf\mathbf
  \renewcommand\mathbf\symbf
  \let\uglymathsf\mathsf
  \renewcommand\mathsf\symsf
}

答案2

正如消息所述,您使用的字体没有粗体字体。\symbf不更改字体,它会从相同字体中选择粗体数学字母范围。更一般地说,bm它与大多数不兼容unicode-math(我确实希望扩展它,但存在一些技术问题)。

当然,第一行在这里毫无意义

\usepackage{bm}
\renewcommand{\bm}{\symbf}

由于 renew 命令取消了包的定义,因此只需使用

\newcommand\bm{\symbf}`

如果您想要使用别名\symbf,也许是因为您正在使用包来\bm转换现有的 pdftex 文档,否则根本不要使用,而是在您的数学公式中使用。bmunicode-math\bm\symbf

请注意,问题询问有关别名的问题\bm\symbf所以这就是我上面所展示的,但是对于字母,例如 x, \bm{x}是粗体数学斜体而不是粗体直立,所以\symbfit可能是一个更好的选择。

相关内容