答案1
您可以用zref-savepos
它来计算位移。
参数start
和end
是任意标签,对于每个应用程序应该是不同的。
\documentclass{article}
\usepackage{amsmath}
\usepackage{zref-savepos}
\newcommand{\addunderbrace}[3]{%
$\underbrace{\hspace{\numexpr\zposx{#2}-\zposx{#1}\relax sp}}_{\text{#3}}$%
}
\newcommand\vertbackup{%
-\dimexpr\normalbaselineskip-\dp\strutbox\relax
}
\begin{document}
\begin{tabular}{lcccccccccc}
& 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline
D5 & \zsaveposx{start}x & x & x & & x\zsaveposx{end} & x & x & & & \\[\vertbackup]
& \multicolumn{5}{c}{\addunderbrace{start}{end}{A A A}}
\end{tabular}
\end{document}
答案2
在这里,我只是将下划线作为新行的一部分。我将标签堆叠在下划线下方,下划线宽度\dimexpr5ex+9\tabcolsep
是根据下划线的行内容选择的。1ex
的宽度\makebox
基于包含标题的列数据的宽度0
。
\documentclass{article}
\usepackage{stackengine}
\stackMath
\begin{document}
\begin{tabular}{lcccccccccc}
& 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\
\hline
D5 & x & x & x & & x & x & x & & & \\[-8pt]
&\makebox[1ex][l]{%
\stackunder{\underbrace{\hspace{\dimexpr5ex+9\tabcolsep\relax}}}{T \times T}}
\end{tabular}
\end{document}