如何任意组合下标、上标和“中标”

如何任意组合下标、上标和“中标”

我想排版包含“中标”的公式 - 如下标和上标,但位于中间。此问答提供了一些解决方案:下标。上标。中标?。但是,我希望能够将中标、上标和下标组合到同一个符号中。此外,我希望它们水平居中,甚至偶尔右对齐(事实证明,我不仅使用了中标,还使用了左边中文书。

部分解决方案是简单地编写类似

$\begin{smallmatrix}i // j // k\end{smallmatrix} X$

;这解决了水平居中问题。当所有三个索引都存在时,这看起来已经足够好了。但是,如果其中一个索引缺失 - 例如

$\begin{smallmatrix}i // j // \end{smallmatrix} X$

,垂直对齐被破坏:j 应该是中标,但现在挂得太低,可能会被误认为是下标。

有没有办法产生类似的结果,但以这样的方式,索引堆栈的中间线始终具有一致的,或多或少居中的垂直位置,无论顶部和底部的线是否存在以及它们有多高或多短?

我并不坚持使用smallmatrix:也许正确的答案是\overset,,\substack普通的matrixarray与的组合\scriptstyle,或者完全不同的东西。任何解决方案都是可以接受的,只要它允许水平居中(或右对齐)并且不会在主符号及其索引之间引入过多的水平间距。

答案1

在数学模式下的使用:

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

\makeatletter
\newenvironment{smallermatrix}[1][c]
{\null\,\vcenter\bgroup
  \Let@\restore@math@cr\default@tag
  \baselineskip0pt \lineskip0.4pt \lineskiplimit0pt
  \ialign\bgroup\if#1l\else\hfil\fi$\m@th\scriptstyle##$\if#1r\else\hfil\fi&&\thickspace\hfil
  $\m@th\scriptstyle##$\hfil\crcr
}{%
  \crcr\egroup\egroup\,%
}
\makeatother

\NewDocumentCommand{\ts}{O{c} e{^?_}}{% ^ for superscript, ? for midscript, _ for subscript
  \begin{smallermatrix}[#1]
  \mathstrut\IfValueT{#2}{#2} \\
  \mathstrut\IfValueT{#3}{#3} \\
  \mathstrut\IfValueT{#4}{#4}
  \end{smallermatrix}%
}

\begin{document}

\[
X\ts^{a}?{b}_{c}\quad X\ts?{x}_{y} \quad X\ts^{a}_{b} \quad \ts[r]^{aaa}?{b}_{cc}X \quad X\ts[l]^{[0,1]}?{b}
\]

\end{document}

在此处输入图片描述

相关内容