使用 \mathbf 时如何减少字母和下标之间的间距

使用 \mathbf 时如何减少字母和下标之间的间距

我已将问题简化得更清楚一些。

如何在序言中添加宏来改变任何出现的模式\mathbf{foo}_{boo}成为\mathbf{foo}_{\!boo}

例如,给定这个文件

\documentclass[12pt]{article}%

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

%---> need macro here

\begin{document}

\begin{align}
\mathbf{V}_{D}  & =\mathbf{V}_{C}+\boldsymbol{\omega}_{CD}\times\mathbf{r}_{D/C}
\end{align}
But we also see that $\mathbf{V}_{D}$ can be written as

\end{document}

然后,只需修改序言,我希望生成的 PDF 就像我写的那样

\begin{document}

\begin{align}
\mathbf{V}_{\!D}  & =\mathbf{V}_{\!C}+\boldsymbol{\omega}_{CD}\times\mathbf{r}_{\!D/C}
\end{align}
But we also see that $\mathbf{V}_{\!D}$ can be written as

\end{document}

仅在序言中使用宏或其他 Latex 技巧。我无法编辑文档内的代码或使用编辑器进行全局搜索/替换。

注意:我正在使用路拉泰克斯在 texlive 上编译为 pdf。

答案1

我不知道这可能会破坏多少东西:

在此处输入图片描述

\documentclass{article}%

\usepackage{amsmath}

\begin{document}

\begin{align}
  \mathbf{V}_{D}  & =\mathbf{V}_{C}+\mathbf{\omega}_{CD}\times\mathbf{r}_{D/C}
\end{align}
But we also see that $\mathbf{V}_{D}$ can be written as

\let\oldmathbf\mathbf
\makeatletter
\renewcommand{\mathbf}[1]{\oldmathbf{#1}\@ifnextchar_{\msubscript}{}}
\def\msubscript_#1{_{\!#1}}
\makeatother

\begin{align}
  \mathbf{V}_{D}  & =\mathbf{V}_{C}+\mathbf{\omega}_{CD}\times\mathbf{r}_{D/C}
\end{align}
But we also see that $\mathbf{V}_{D}$ can be written as

\end{document}

设置之后,我们先查看一下输入流中\mathbf{.}是否有,以及插入 的条件。_\!

答案2

您不想\!在 中的每个下标后面添加\mathbf: 的示例\mathbf{A}_{\!D}应该足够了。

相反,定义您自己的宏并检查其参数中的最后一个或唯一字母,以决定是否添加\!或不添加任何内容或另一个间距命令(我使用了 A、V、W 和 Y 作为示例)。上标也需要注意。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\NewDocumentCommand{\vect}{ m e{_^} }{\innervect{#1}{#2}{#3}}

\ExplSyntaxOn
\NewDocumentCommand{\innervect}{mmm}
 {
  \mathbf{#1}
  \IfValueT{#2}% there is a subscript
   {
    \str_case_x:nnF { \tl_item:nn { #1 } { -1 } }
     {
      {V}{\sb{\!#2}}
      {W}{\sb{\!#2}}
      {Y}{\sb{\mspace{-1mu}#2}}
     }
     {\sb{#2}}
   }
  \IfValueT{#3}% there is a superscript
   {
    \str_case_x:nnF { \tl_item:nn { #1 } { -1 } }
     {
      {A}{\sp{\!#3}}
     }
     {\sp{#3}}
   }
 }
\ExplSyntaxOff

\begin{document}

$\vect{V}_{D}+\vect{A}_{D} \mid \mathbf{V}_{D}+\mathbf{A}_{D}$

$\vect{V}^{2}+\vect{A}^{2} \mid \mathbf{V}^{2}+\mathbf{A}^{2}$

$\vect{V}_{D}^{2}+\vect{A}_{D}^{2} \mid
   \mathbf{V}_{D}^{2}+\mathbf{A}_{D}^{2}$

\end{document}

在此处输入图片描述

相关内容