![bm 和 amsmath 包的顺序,为什么先加载会有所不同?](https://linux22.com/image/320183/bm%20%E5%92%8C%20amsmath%20%E5%8C%85%E7%9A%84%E9%A1%BA%E5%BA%8F%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%E5%85%88%E5%8A%A0%E8%BD%BD%E4%BC%9A%E6%9C%89%E6%89%80%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
当我把下面的 MWE放在\usepackage{bm}
后面时,会出现错误。必须在前面才能删除错误。我以为这些包可以按任何顺序加载。 \usepackage{amsmath}
bm
amsmath
\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
加载,因为它重新定义为 与 相同。amsmath
amsbsy
\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
不会发生,但在我看来,您得到的输出很糟糕:只需比较一下。