表格和 \hlines 太短或太宽

表格和 \hlines 太短或太宽

这是我正在尝试做的 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中的命令。该命令允许您为奇数行和偶数行交替使用颜色,第一个颜色指定器用于奇数行。您仍然可以使用它来更改特定行的颜色。xcolorrowcolorsrowcolor

修改了列类型和颜色的示例。

\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}

请注意,所有X列的宽度相同。调整宽度可能比较棘手tabularx。请尝试使用tabulary或者tabu包裹。

相关内容