对齐自定义命令的 `\dot`

对齐自定义命令的 `\dot`

为了方便起见,我经常为文档中经常使用的变量创建自定义命令,例如

\newcommand{\cartPos}{\ensuremath{x}}

这很好用,我现在可以做所有常见的事情,比如$\dot{\cartPos}$。但如果我有带下划线的东西,比如

\newcommand{\vectorPos}{\ensuremath{r_x}}

如果我现在这样做\dot{\vectorPos},点将应用于整个对象,而不是仅对齐在上方r,并且位于变量和下划线之间。有没有办法优雅地处理这个问题?

基本上,我想得到 在此处输入图片描述 代替 在此处输入图片描述

答案1

如果您正在为向量定义宏,则可以重新定义\dot条件,以确定是否将其放置在向量宏上,还是其他位置。

在此处输入图片描述

\documentclass{article}

\NewCommandCopy{\olddot}{\dot}
\RenewDocumentCommand{\dot}{ m }{%
  \ifx\vectorPos#1
    \olddot{r}_x
  \else
    \olddot{#1}
  \fi
}

\newcommand{\cartPos}{x}
\newcommand{\vectorPos}{r_x}

\begin{document}

$\cartPos ~ \vectorPos$

$\dot{\cartPos} ~ \dot{\vectorPos}$

$\dot{r_x} ~ \dot{r}_x ~ \dot{\vectorPos}$

\end{document}

上述选项有效,但不能轻易转化为任何通用设置。

相关内容