软件包 bm 存在问题

软件包 bm 存在问题

我对 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不理解第二种形式。使用amsmathnot会得到相同的定义和相同的失败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]

相关内容