Таблица и \hстроки слишком короткие или широкие

Таблица и \hстроки слишком короткие или широкие

Вот краткое изложение того, что я пытаюсь сделать.

\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-wide, но нет столбца с регулируемой шириной. То же самое для второй таблицы, но в этом случае содержимое таблицы превышает 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}

Обратите внимание, что все X-столбцы имеют одинаковую ширину. Регулировка ширины может быть сложной в tabularx. Вместо этого попробуйте использоватьtabularyилиtabuупаковка.

Связанный контент