这是我正在尝试做的 MWE。
\documentclass[a4paper]{article}
\usepackage{tabularx,booktabs}
\usepackage{color,colortbl}
\begin{document}
\begin{table}[htb]
\centering
\begin{tabularx}{\textwidth}{l r r r r r r r r r r r}
\toprule
A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 \\
\midrule
\rowcolor{blue} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\[0pt]
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\
\bottomrule
\end{tabularx}
\begin{tabularx}{\textwidth}{l r r r r r r r r r r r r r r}
\toprule
A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & A14 & A15 \\
\midrule
\rowcolor{blue} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 \\[0pt]
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
第一个表格太长了\toprule
,\bottomrule
而且看起来很奇怪。我对此有几个疑问。
我如何将尺寸设置tabularx
为内容宽度?
我如何将最后一列设置为右对齐(以便所有列跨越表格)?
我怎样才能将其设置为\rowcolor
跨越整个表格?
示例中的第二个表格太宽了。您知道有什么技巧可以让它看起来更好吗?
答案1
第一个表格的规则很长,因为tabularx
试图制作一个textwidth
宽度为 的表格,但没有宽度可调的列。第二个表格也是如此,但在这种情况下,表格内容超出了textwidth
。您需要使用X
-column 说明符来允许自动调整宽度。尝试替换
\begin{tabularx}{\textwidth}{l r r r r r r r r r r r}
和
\begin{tabularx}{\textwidth}{l *{11}X}
请注意X
-columns 是左对齐的,并且宽度相等。要使最后一列右对齐,您可以使用r
-column 或定义新的列类型R
为关注,
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
然后使用\begin{tabularx}{\textwidth}{l *{10}X r}
或\begin{tabularx}{\textwidth}{l *{10}X R}
使最后一列右对齐。
要使所有行都具有相同的颜色,您可以使用包rowcolors
中的命令。该命令允许您为奇数行和偶数行交替使用颜色,第一个颜色指定器用于奇数行。您仍然可以使用它来更改特定行的颜色。xcolor
rowcolors
rowcolor
修改了列类型和颜色的示例。
\documentclass[a4paper]{article}
\usepackage{tabularx,booktabs}
\usepackage[table]{xcolor}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}[htb]
\centering
\rowcolors{1}{gray}{gray}
\begin{tabularx}{\textwidth}{L *{10}C R}
\toprule
A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 \\
\midrule
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\[0pt]
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}