\dot{\vec{\hat{x}}} 无法使用 svjour3 进行编译

\dot{\vec{\hat{x}}} 无法使用 svjour3 进行编译

标题说明了一切。我想排版一个向量的时间导数,其符号应为\hat{x}。文档类 svjour3 用于 Springer 期刊。以下 MWE 重现了文章类中的行为:

\documentclass{article}
\if@mathematic
   \def\vec#1{\ensuremath{\mathchoice
                     {\mbox{\boldmath$\displaystyle\mathbf{#1}$}}
                     {\mbox{\boldmath$\textstyle\mathbf{#1}$}}
                     {\mbox{\boldmath$\scriptstyle\mathbf{#1}$}}
                     {\mbox{\boldmath$\scriptscriptstyle\mathbf{#1}$}}}}
\else
   \def\vec#1{\ensuremath{\mathchoice
                     {\mbox{\boldmath$\displaystyle#1$}}
                     {\mbox{\boldmath$\textstyle#1$}}
                     {\mbox{\boldmath$\scriptstyle#1$}}
                     {\mbox{\boldmath$\scriptscriptstyle#1$}}}}
\fi

\usepackage{amsmath}

\begin{document}
\begin{equation}
    \dot{\vec{\hat{x}}}  % Failure
    \vec{\dot{\hat{x}}}  % OK
    \dot{\hat{\vec{x}}}  % OK
\end{equation}
\end{document}

Pdflatex 输出包含

! Undefined control sequence.
\macc@adjust ->\dimen@ \macc@kerna 
                                   \advance \dimen@ \macc@kernb \kern -\dimen@ 

我如何在 svjour3 类中排版这样的向量?

答案1

该类svjour3使用错误的方式重新定义\vec

只需加载类并执行

\let\vec\mathbf

完整示例

\documentclass{svjour3}
\usepackage{amsmath}

\let\vec\mathbf % fix svjour3 wrong definition

\begin{document}

\begin{equation}
    \vec{\dot{\hat{x}}}
    \dot{\vec{\hat{x}}}
    \dot{\hat{\vec{x}}}
\end{equation}

\end{document}

在此处输入图片描述

如果你喜欢粗斜体矢量,请添加\usepackage{bm}并执行

\let\vec\bm

反而。

答案2

根据这个答案 https://tex.stackexchange.com/a/251672/45962

最干净的方法是:

\RequirePackage{amsmath}
\documentclass{svjour3}

像这样,首先加载 amsmath 并定义\vec,然后svjour3可以重新定义命令。

不幸的是,你必须将其放入\vec最外面的括号中:

\RequirePackage{amsmath}
\documentclass{svjour3}
\begin{document}
\begin{equation}
    \vec{\dot{\hat{x}}} %OK
    %\dot{\vec{\hat{x}}} %Failure
    %\dot{\hat{\vec{x}}} %Failure
\end{equation}
\end{document}

相关内容