调整上标与下标之间的间距

调整上标与下标之间的间距

根据基数中的字母,前面的上标之间有空格。T、W、Y 等字母在左上角使用墨水,因此没有空格,但使用 I、D、E、...(这些字母的左上角没有组件)时,它们前面有空格。

有没有办法来解决这个问题?

\documentclass{article}
\usepackage{tensor}

\begin{document}
$T^b$ %no space

${}^b T$ ${}^b W$ ${}^b Y$ %no space

$I^b$ %no space

${}^b I$ ${}^b D$ ${}^b E$ %spacing between b and I, D or E

$\tensor[^b]I{}$ %doesn't help
\end{document}

答案1

这是一个基于(后半部分)的解决方案Hendrik Vogt 的回答太棒了。它通过侵入amsmath重音定位机制来工作。我不太理解它。

我定义了\presup{<superscript>}{<letter>},它按照您的要求执行,并将其应用于您提到的所有字母。我还将它应用于字母“A”和“J”(我认为它们是最糟糕的错误)和\mathcal{A}。除了“T”(现在看起来更糟)之外,我认为这些都是改进。

\documentclass{article}
\usepackage{amsmath}

\makeatletter %% <- make @ usable in command names
\newcommand*\rel@kern[1]{\kern#1\dimexpr\macc@kerna}
\newcommand*\presup[2]{%
  \begingroup
  \def\mathaccent##1##2{%
    {}^{#1}\rel@kern{-0.8}\macc@nucleus
  }%
  \macc@depth\@ne
  \let\math@bgroup\@empty \let\math@egroup\macc@set@skewchar
  \mathsurround\z@ \frozen@everymath{\mathgroup\macc@group\relax}%
  \macc@set@skewchar\relax
  \let\mathaccentV\macc@nested@a
  \macc@nested@a\relax111{#2}%
  \endgroup
}
\makeatother  %% <- revert @

\begin{document}

\begin{tabular}{lccccccccc}
    Bad: & ${}^xA^x$ & ${}^xJ^x$ & ${}^xT^x$ & ${}^xW^x$ & ${}^xY^x$ & ${}^xI^x$ & ${}^xD^x$ & ${}^xE^x$ & ${}^x\mathcal{A}^x$
    \\
    Good: & $\presup{x}{A}^x$ & $\presup{x}{J}^x$ & $\presup{x}{T}^x$ & $\presup{x}{W}^x$ & $\presup{x}{Y}^x$ & $\presup{x}{I}^x$ & $\presup{x}{D}^x$ & $\presup{x}{E}^x$ & $\presup{x}{\mathcal{A}}^x$
\end{tabular}

\end{document}

输出

相关内容