![bm导致粗体字体未定义问题](https://linux22.com/image/449606/bm%E5%AF%BC%E8%87%B4%E7%B2%97%E4%BD%93%E5%AD%97%E4%BD%93%E6%9C%AA%E5%AE%9A%E4%B9%89%E9%97%AE%E9%A2%98.png)
\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 文档,否则根本不要使用,而是在您的数学公式中使用。bm
unicode-math
\bm
\symbf
请注意,问题询问有关别名的问题\bm
,\symbf
所以这就是我上面所展示的,但是对于字母,例如 x, \bm{x}
是粗体数学斜体而不是粗体直立,所以\symbfit
可能是一个更好的选择。