似乎如果列的总宽度不够,则tabular
拉伸最后的列。在下图中,请注意最后一列由于标题较宽而被拉伸。
问题:
有没有一种简单的方法可以改变此默认设置以延长第一的列来代替?
笔记:
- 这些表格是自动生成的,最多可以有 18 列。因此,
l*{17}{c}
表格规范。 - 解决这个问题的一个方法是指定第一列的宽度,但我觉得肯定有更好的方法。我不希望第一列的宽度超过需要的宽度。
代码:
\documentclass{article}
\usepackage{booktabs}
\def\NumberOfColumns{4}%
\newcommand*{\BuildTable}[1]{%
%% #1 = Title
\begin{tabular}{l*{17}{c}}
\toprule
\multicolumn{\NumberOfColumns}{c}{{#1}} \\
\cmidrule(lr){1-4}
Heading & 0 & 1 & 2 \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-2}
\cmidrule(lr){3-3}
\cmidrule(lr){4-4}
Label & a & b & c \\
Label & a & b & c \\
Label & a & b & c \\
\bottomrule
\end{tabular}%
}%
\begin{document}
\BuildTable{Narrow Title}
\quad
\BuildTable{Some Title That is Wide}
\end{document}
答案1
如果您愿意使用包tblr
中的环境,您可以指定均匀拉伸所有列的tabularray
选项。hspan=even
\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\def\NumberOfColumns{4}%
\begin{document}
normal \verb|tblr| \smallskip
\begin{tblr}{colspec={l*{3}{c}}}
\toprule
\SetCell[c=\NumberOfColumns]{c} Some Title That is Wide \\
\cmidrule[lr]{1-4}
Heading & 0 & 1 & 2 \\
\cmidrule[lr]{1-1}
\cmidrule[lr]{2-2}
\cmidrule[lr]{3-3}
\cmidrule[lr]{4-4}
Label & a & b & c \\
Label & a & b & c \\
Label & a & b & c \\
\bottomrule
\end{tblr}
\bigskip
with \verb|hspan=even| \smallskip
\begin{tblr}{colspec={l*{3}{c}},hspan=even}
\toprule
\SetCell[c=\NumberOfColumns]{c} Some Title That is Wide \\
\cmidrule[lr]{1-4}
Heading & 0 & 1 & 2 \\
\cmidrule[lr]{1-1}
\cmidrule[lr]{2-2}
\cmidrule[lr]{3-3}
\cmidrule[lr]{4-4}
Label & a & b & c \\
Label & a & b & c \\
Label & a & b & c \\
\bottomrule
\end{tblr}
\bigskip
with \verb|booktabs| spacing \smallskip
\begin{booktabs}{colspec={l*{3}{c}},hspan=even}
\toprule
\SetCell[c=\NumberOfColumns]{c} Some Title That is Wide \\
\cmidrule[lr]{1-4}
Heading & 0 & 1 & 2 \\
\cmidrule[lr]{1-1}
\cmidrule[lr]{2-2}
\cmidrule[lr]{3-3}
\cmidrule[lr]{4-4}
Label & a & b & c \\
Label & a & b & c \\
Label & a & b & c \\
\bottomrule
\end{booktabs}
\end{document}
该tblr
环境默认具有更多垂直间距。如果您想要保留间距booktabs
,请使用包booktabs
提供的环境,其间距tabularray
行为与常规行为相同。tabular