表格和\h行太短或太寬

表格和\h行太短或太寬

這是我正在嘗試做的 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- 列左對齊且寬度相等。要使最後一列右對齊,您可以使用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}

請注意,所有X- 列的寬度相同。調整寬度在tabularx.相反嘗試使用tabulary或者tabu包裹。

相關內容