我想使用下括号将一些信息标注到表格列组中。因此,表格下方应该有一个\underbrace
横跨多行的下括号。我尝试了以下方法:
\begin{tabular}{r|c|c|c|c}
i & 0 & 1 & 2 & 3 \\
\multicolumn{1}{c}{} & \multicolumn{3}{c}{$\underbrace{\hfill}_{a_1}$} & \multicolumn{1}{c}{$\underbrace{\hfill}_{a_1}$}
\end{tabular}
此处\hfill
的效果不如我预期。支架没有被拉伸,但仍然很小且居中。我该如何让它拉伸?
答案1
\documentclass{article}
\begin{document}
\begin{tabular}{r|c|c|c|c}
i & 0 & 1 & 2 & 3 \\
\multicolumn{1}{c}{} & \multicolumn{3}{c}{\upbracefill}& \multicolumn{1}{c}{\upbracefill}\\[-1ex]
\multicolumn{1}{c}{} & \multicolumn{3}{c}{$\scriptstyle a_1$}& \multicolumn{1}{c}{$\scriptstyle a_2$}\\
\end{tabular}
\end{document}
答案2
是的,您需要用适当的空格填充跨越的内容:
\documentclass{article}
\begin{document}
\begin{tabular}{r|c|c|c|c}
$i$ & 0 & 1 & 2 & 3 \\
\multicolumn{1}{c}{} &
\multicolumn{3}{@{}c@{}}{$\underbrace{\hspace*{\dimexpr6\tabcolsep+2\arrayrulewidth}\hphantom{012}}_{a_1}$} &
\multicolumn{1}{@{}c@{}}{$\underbrace{\hspace*{2\tabcolsep}\hphantom{3}}_{a_2}$}
\end{tabular}
\bigskip
\begin{tabular}{r|c|c|c|c}
$i$ & 0 & 1 & 2 & 3 \\[\dimexpr-\normalbaselineskip+1ex]
\multicolumn{1}{c}{} &
\multicolumn{3}{@{}c@{}}{$\underbrace{\hspace*{\dimexpr6\tabcolsep+2\arrayrulewidth}\hphantom{012}}_{a_1}$} &
\multicolumn{1}{@{}c@{}}{$\underbrace{\hspace*{2\tabcolsep}\hphantom{3}}_{a_2}$}
\end{tabular}
\end{document}
使用列规范@{}c@{}
将删除该(多)单元格条目的任何列填充。 放置\underbrace
在大小为 的空间下6\tabcolsep+2\arrayrulewidth
,水平宽度为 的文本相当于012
(在第一个 中\underbrace
),这与 中的结构化信息量相同tabular
。
我添加了第二种替代方案,可以调整下的垂直对齐tabular
,我认为这更好。
如果你不满意tabular
,当然,更简单的方法是:
\documentclass{article}
\usepackage{mathtools}% http://ctan.org/pkg/mathtools
\newcommand{\sep}{\mathclap{|}}% Separator
\begin{document}
\[
i \quad\sep\underbrace{\quad 0 \quad\sep\quad 1 \quad\sep\quad 2 \quad}_{a_1}
\sep
\underbrace{\quad 3\vphantom{|} \quad}_{a_2}\sep
\]
\end{document}
mathtools
提供\mathclap
- 数学模式下以内容为中心的零宽度框。