表と \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テーブル全体にまたがるように設定するにはどうすればよいですか?

例の 2 番目の表は幅が広すぎます。見栄えを良くするためのコツをご存知ですか?

答え1

最初のテーブルには長い罫線があります。これはtabularx、テーブルを - 幅にしようとしているtextwidthのに、幅を調整できる列がないためです。2 番目のテーブルも同様ですが、この場合はテーブルの内容が を超えていますtextwidth。自動幅調整を可能にするには、-column 指定子を使用する必要がありますX。次のものを置き換えてみてください。

\begin{tabularx}{\textwidth}{l r r r r r r r r r r r}

\begin{tabularx}{\textwidth}{l *{11}X}

X-columnは左揃えで幅が等しいことに注意してください。最後の列を右揃えにするには、 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パッケージ。

関連情報