转交流群友遇到的一个问题:
在article类中使用下面的代码可以正常编译:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\begin{aligned}
& \frac{\mathrm{d}}{\mathrm{d} t}\left(\frac{1}{2}\dot{\boldsymbol{x}}\boldsymbol{^{\top } m}\dot{\boldsymbol{x}} +V(\boldsymbol{x})\right) =\frac{1}{2}\left(\ddot{\boldsymbol{x}}\boldsymbol{^{\top } m}\dot{\boldsymbol{x}} +\boldsymbol{\dot{\boldsymbol{x}}^{\top } m}\ddot{\boldsymbol{x}}\right) +\dot{\boldsymbol{x}}^{\top } \nabla V(\boldsymbol{x})\\
= & \boldsymbol{\dot{\boldsymbol{x}}^{\top }}(\boldsymbol{m}\ddot{\boldsymbol{x}} +\nabla V(\boldsymbol{x})) =\boldsymbol{\dot{\boldsymbol{x}}^{\top } 0} =0,
\end{aligned}
\end{equation*}
\end{document} 但在elegantbook模板中使用则会出现下面的报错信息
\documentclass[lang=cn,newtx,10pt,scheme=chinese]{elegantbook}
\begin{document}
\begin{equation}
\begin{aligned}
& \frac{\mathrm{d}}{\mathrm{d} t}\left(\frac{1}{2}\dot{\boldsymbol{x}}\boldsymbol{^{\top } m}\dot{\boldsymbol{x}} +V(\boldsymbol{x})\right) =\frac{1}{2}\left(\ddot{\boldsymbol{x}}\boldsymbol{^{\top } m}\dot{\boldsymbol{x}} +\boldsymbol{\dot{\boldsymbol{x}}^{\top } m}\ddot{\boldsymbol{x}}\right) +\dot{\boldsymbol{x}}^{\top } \nabla V(\boldsymbol{x})\\
= & \boldsymbol{\dot{\boldsymbol{x}}^{\top }}(\boldsymbol{m}\ddot{\boldsymbol{x}} +\nabla V(\boldsymbol{x})) =\boldsymbol{\dot{\boldsymbol{x}}^{\top } 0} =0,
\end{aligned}
\end{equation}
\end{document}报错信息如下,猜测是因为\boldsymbol命令的嵌套使用导致的...但是也很奇哉怪也
Runaway definition?
->
! TeX capacity exceeded, sorry [main memory size=5000000].
\bm@add ...mand #1}\xdef \bm@command {\the \toks@
}\endgroup \bm@expand
l.5 ...\boldsymbol{\dot{\boldsymbol{x}}^{\top } m}
\ddot{\boldsymbol{x}}\righ...
No pages of output.群友S老师@u79794 提出使用\bm可以解决这一问题
% preamble
\usepackage{fixdif,derivative,physics2,bm}
\usephysicsmodule{ab}
\begin{equation*}
\begin{aligned}
& \odv{}t \ab(\frac12 \dot{\bm x}+V(\bm x))
=\frac12\ab(\ddot{\bm x}^\top\bm m\dot{\bm x}+\dot{\bm x}^\top\bm m+\ddot{\bm x})+\dot{\bm x}^\top\nabla V(\bm x)\\
& =\dot{\bm x}^\top(\bm m\ddot{\bm x}+\nabla V(\bm x))=\dot{\bm x}^\top\bm 0=0,
\end{aligned}
\end{equation*}
我的问题是:
1.\bm和\boldsymbol的区别和正确的使用方式是什么?
2.为何elegantbook中会出现上面的报错,是否有办法避免调用某些宏包之后出现\cmd不能被嵌套使用的情况(例如上面的\boldsymbol)
下面是MWE:
实际上,正是由于 elegantbook 加载了 bm 宏包才导致这个错误。bm 设置 \let\boldsymbol\bm,但为什么直接嵌套 \bm 不会出错呢?因为最外层的那个 \bm 设置 \let\bm\@firstofone,所以里面的 \bm 不会生效。但并没有 \let\boldsymbol\@firstofone,嵌套 \boldsymbol 就会出错。
\boldsymbol 直接把字体替换为加粗的,如果加粗的字体没有这个字形,就保持不变。而 \bm 会尝试替换字体,如果没有会使用 “poor man's bold”,即伪粗体。
问题2,没有一劳永逸的解决方案,具体问题具体分析。
好的,谢谢您告知
\@firstofone这一宏的使用和\bm以及\boldsymbol对我很有帮助,非常感谢!