bm 和 amsmath 包的顺序,为什么先加载会有所不同?

bm 和 amsmath 包的顺序,为什么先加载会有所不同?

当我把下面的 MWE放在\usepackage{bm}后面时,会出现错误。必须在前面才能删除错误。我以为这些包可以按任何顺序加载。 \usepackage{amsmath}bmamsmath

\documentclass[11pt]{article}%
\usepackage{amsmath}
\usepackage{bm}
\renewcommand*{\dot}[1]{\overset{\bm .}{#1}}
\begin{document}
\[
\boldsymbol{\dot{\omega}}
\]
\end{document}

错误是pdflatex HW4.tex

LaTeX2e <2015/01/01> patch level 2
Babel <3.9m> and hyphenation patterns for 79 languages loaded.
(/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
.....
(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty))
(/usr/local/texlive/2015/texmf-dist/tex/latex/tools/bm.sty) (./HW4.aux)
! Missing control sequence inserted.
<inserted text> 
                \inaccessible 
l.11 \boldsymbol{\dot{\omega}}

当订单

\usepackage{bm}
\usepackage{amsmath}

然后没有错误。奇怪的是宏

  \renewcommand*{\dot}[1]{\overset{\bm .}{#1}}

是在两个包都加载之后,那么为什么先加载哪个包会有区别呢?因为在读取宏时,两个包都已加载?如果我删除上述宏,则可以更改顺序而不会出现错误。只有当上述宏存在时,顺序才会有所不同。

上面的宏不是我的代码,很久以前我从这个论坛上找到的,现在不记得在哪个帖子上看到的了。如果我找到了,会添加一个链接。

知道为什么会这样吗?

TL 2015,Linux Mint。

答案1

该包应该在 之后(准确地说,在 之后)bm加载,因为它重新定义为 与 相同。amsmathamsbsy\boldsymbol\bm

错误在于您对 的重新定义\dot:您不能嵌套调用\bm,仅此而已。

如果你这样做,\bm{\dot{\omega}你会得到一个粗体点,而不需要重新定义。

\documentclass[11pt]{article}%

\usepackage{amsmath}
\usepackage{bm}

\begin{document}

\[
\bm{\dot{\omega}}\ne\dot\omega
\]

\end{document}

在此处输入图片描述


bm当位于 之前时,您的代码会发生什么情况amsmath? 重新定义\boldsymbol不会发生,但在我看来,您得到的输出很糟糕:只需比较一下。

在此处输入图片描述

相关内容