我想排版一些类似于“广义球谐函数”所用的符号。这涉及在字母上方放置一个点阵列。该阵列将有两列,每列中的点数可以不同。我尝试了以下方法,但看起来很糟糕:
$\overset{\begin{matrix} . & \ \\ . & . \end{matrix}}{T}$
我宁愿不必手动调整阵列间距,有什么方法可以简单地做到这一点吗?如果没有,我该怎么做(即使它需要手动调整阵列间距)?
您可以在此处找到其应有的外观示例(它是带有上方圆点的 T 符号,但它不应该看起来像三角形,而应该明显是两列,左边有两个点,右边有一个点):
答案1
这是一个可能的方法
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\spher@harm#1{%
\vbox{\hbox{%
\offinterlineskip
\valign{&\hb@xt@2\p@{\hss$##$\hss}\vskip.2ex\cr#1\crcr}%
}\vskip-.36ex}%
}
\def\gshone{\spher@harm{.}}
\def\gshtwo{\spher@harm{.&.}}
\def\gshthree{\spher@harm{.&.&.}}
\let\gsh\spher@harm
\makeatother
\begin{document}
$\displaystyle
\overset{\gshtwo\gshone}{T}
\overset{\gshthree\gshtwo\gshone}{T}
\dot{T}
$
\end{document}
我只定义了三种组合,您可以说\gsh{.&.&.&.}
得到四个点(或定义\gshfour
)。
新版本
\documentclass{article}
\usepackage{amsmath,mathtools}
\makeatletter
\def\gsh#1{%
\vbox{\hbox{%
\let\\\cr
\offinterlineskip
\valign{&\hb@xt@2\p@{\hss$##$\hss}\vskip.2ex\cr#1\crcr}%
}\vskip-.36ex}%
}
\def\gshsym{\@ifstar\gsh@ssym\gsh@sym}
\def\gsh@sym#1#2{\mathrlap{\overset{#1}{\phantom{#2}}}#2}
\def\gsh@ssym#1#2{\overset{#1}{#2}{\vphantom{#2}}}
\makeatother
\newcommand\gshone{\gsh{.}}
\newcommand\gshtwo{\gsh{.&.}}
\newcommand\gshthree{\gsh{.&.&.}}
\begin{document}
$\displaystyle
\gshsym{\gshtwo\gshone}{T}^m_n
\gshsym{\gshthree\gshtwo\gshone}{T}
\gshsym{\gsh{\scriptscriptstyle*&\scriptscriptstyle*}}{F}^2
\gshsym*{\gshthree\gshthree\gshtwo\gshtwo\gshtwo}{F}^2
$
\end{document}
您使用\gshsym
不超过其覆盖字母的“短”上标\gshsym*
来表示更宽的上标。