我对 bm 软件包有疑问,可能与其他软件包有冲突。或者,也许我不了解这个软件包的工作原理。
以下是 MWE:
\documentclass[a4paper,10pt]{article}
\usepackage{mathtools}
\usepackage{newtxtext}
\usepackage[frenchmath]{newtxmath}
\usepackage{bm}
\begin{document}
$\bm{\cos\theta}$
$\bm{\theta}$
\end{document}
结果如下:
如您所见,第一行缺少 theta,而第二行没有,我不明白为什么。如果我注释掉前三个\usepackage
,它就可以正常工作,我发现这更奇怪
答案1
您可以添加一个快速解决方法\relax
\documentclass[a4paper,10pt]{article}
\usepackage{mathtools}
\usepackage{newtxtext}
\usepackage[frenchmath]{newtxmath}
\usepackage{bm}
\begin{document}
$\bm{\cos\theta}$
$\bm{\cos\relax\theta}$
$\bm{\theta}$
\end{document}
\show\cos
在 newtxmath 显示之前和之后添加
> \cos=macro:
->\protect \cos .
和
> \cos=macro:
->\qopname \relax o{cos}.
l.5 \show\cos
并且基本上bm
不理解第二种形式。使用amsmath
not会得到相同的定义和相同的失败newtxmath
)
更简单的测试用例
\documentclass[a4paper,10pt]{article}
%\usepackage{amsmath}
\usepackage{bm}
\bmdefine\bcos{\cos}
\show\bcos
\begin{document}
\end{document}
取消注释amsmath
在这里不会有好结果......
如果你修改在第 195 行bm.sty
添加一行定义\qopname
,它看起来像
...
\let\DN@\copy
\let\FN@\copy
\let\next@\copy
\def\qopname##1##2##3{\mathop{\qopname{##1}{##2}{##3}}}%
然后它就起作用了(至少在这种情况下,通常可能不会退出正确的修复),如果你这样做,请修改顶部以说
\ProvidesPackage{bm}
[2021/04/25 v1.2e Bold Symbol Support (DPC/FMi) +qopname fix]