标题说明了一切。我想排版一个向量的时间导数,其符号应为\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}