上组与下组重叠处不需要的空间

上组与下组重叠处不需要的空间

我正在努力适应这个答案如何让下牙套和上牙套重叠重叠的 overgroup/undergroup,但我似乎得到了不需要的额外空间:

重叠 下层群体 上层群体

有没有办法去掉 2 和 3 之间的多余空间,或者让空间更加对称(2 和 3 之间以及 3 和 4 之间留一点多余空间就可以了)?

\documentclass{article}
\usepackage{amsmath,mathtools}
\usepackage{mathabx}

\begin{document}
\begin{align*}
\rlap{$\undergroup{\phantom{123}}$}12\overgroup{345}   \\
\mathrlap{\undergroup{\phantom{123}}}12\overgroup{345}
\end{align*}
\end{document}

答案1

空间是按照\undergroup大小生成的,删除命令可以看到\phantom\undergroup 添加空格

因此,你可以同时粉碎\undergroup\overgroup,但要用\mathclap以使它们居中。使用这个小技巧将它们绘制到合适的位置:

\settowidth{\sometempdim}{123}        % get content width
\kern 0.5\sometempdim\relax           % move to the middle of the expression
\mathclap{\undergroup{\phantom{123}}} % typeset the \undergroup sign
\kern -0.5\sometempdim\relax          % go back
123                                   % typeset the expression

为此定义一些专用的命令:

\makeatletter
\newcommand*{\phantomundergroup}[1]{%
  \settowidth{\@tempdima}{#1}
  \kern 0.5\@tempdima\relax
  \mathclap{\undergroup{\phantom{#1}}}
  \kern -0.5\@tempdima\relax
}
\newcommand*{\phantomovergroup}[1]{%
  \settowidth{\@tempdima}{#1}
  \kern 0.5\@tempdima\relax
  \mathclap{\overgroup{\phantom{#1}}}
  \kern -0.5\@tempdima\relax
}
\makeatletter

这里我使用了\@tempdima,它已由 LaTeX 定义(希望 和 都没有在内部使用\mathclap\overgroup\phantom但是,如果您之前已定义过,则可以使用任意长度。\makeatletter...\makeatother是处理名称@中的所必需的\@tempdima

完整代码:

\documentclass{article}
\usepackage{amsmath,mathtools}
\usepackage{mathabx}

\makeatletter
\newcommand*{\phantomundergroup}[1]{%
  \settowidth{\@tempdima}{#1}
  \kern 0.5\@tempdima\relax
  \mathclap{\undergroup{\phantom{#1}}}
  \kern -0.5\@tempdima\relax
}
\newcommand*{\phantomovergroup}[1]{%
  \settowidth{\@tempdima}{#1}
  \kern 0.5\@tempdima\relax
  \mathclap{\overgroup{\phantom{#1}}}
  \kern -0.5\@tempdima\relax
}
\makeatletter

\begin{document}
\begin{align*}
  12345\\
  \phantomundergroup{123}12
  \phantomovergroup{345}345
\end{align*}
\end{document}

与幻影组

相关内容