Окрашивание всей строки в таблице/табличном

Окрашивание всей строки в таблице/табличном

Я хотел бы раскрасить всю строку "Trail 1" и "Trail 3", кроме самих этих слов (т. е. только цифры, но раскраска идет от \midrule к следующему). Это также уберет крошечные белые пробелы между ними, которые я не уверен, как удалить. Как мне это сделать?

Также, возможно ли добавить легенду к этому, чтобы обозначить цвета? Я знаю, что Pgfplots делает это, но я не знаю, как это включить из-за разницы между tikzpicture и tabular (поправьте меня, если я ошибаюсь, я новичок в этом сообществе).

Вот исполняемый код:

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[sexy]{evan}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage[table]{xcolor}
\newcommand{\mycc}{\cellcolor{lightgray}}

\begin{document}

\begin{center}
\begin{tabular}{SSSSSSS} \toprule
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\ \midrule
    \text{Trail 1}  & \mycc 1.48  & \mycc 2.76 & \mycc 4.02  & \mycc 5.22 & \mycc 6.43 & \mycc 7.76 \\ \midrule
    \text{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ \midrule
    \text{Trail 3}  & \mycc 1.53  & \mycc 2.94 & \mycc 4.53  & \mycc 5.96 & \mycc 7.36 & \mycc 8.83 \\ \midrule
    \text{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\ \bottomrule 
\end{tabular}    
\end{center}

\end{document}

Я не уверен, что делать, так что любая помощь будет высоко оценена! Кроме того, я не уверен, почему значения данных не выровнены, так что если бы это можно было исправить, это было бы здорово!

EDIT: Вот некоторые источники, откуда взят код:

введите описание изображения здесь

Ссылка на таблицу

Ссылка на раскраску

решение1

По умолчаниюзакладкии цвета строк не очень хорошо сочетаются друг с другом. Вы можете обойти это, добавив следующее в преамбулу:

\addtolength{\extrarowheight}{\belowrulesep}
\aboverulesep=0pt
\belowrulesep=0pt

Для легенды я бы просто поместил то, что вам нужно, в tabularсреду внутри minipageсреды, что позволит вам достичь чего-то вроде этого:

введите описание изображения здесь

Вероятно, вам придется подкорректировать эту «легенду» под свой вкус.

Это решает проблему с тем, что цвета строк не заполняют весь вертикальный размер строк, о чем автор топика не спрашивает.но это не исправляет слабую линию между колоннами, о чем на самом деле спрашивает автор. Этот едва заметный зазор, по-моему, ошибка. Самый простой способ исправить это — добавить @{}после каждого спецификатора столбцов, что по сути добавляет «ничего» между столбцами, но вместо того, чтобы ничего не делать, это фактически удаляет небольшое количество пространства и, как следствие, удаляет тонкую едва заметную белую линию между столбцами.

С новым исправлением вывод будет следующим:

введите описание изображения здесь

В частности, теперь исчезли слабые линии между колоннами.

Наконец, в отношении раскраски строк, возможно, это результат упрощения вашего реального кода для MWE, но вместо того, чтобы добавлять \myccк каждой из ячеек, которые вы хотите раскрасить, более эффективно задать цвет строки, а затем использовать \cellcolorдля изменения цвета фона только ячейки в первой. Фактически, используя макрос типа

\newcommand\colorrow{\rowcolor{lightgray}\cellcolor{white}}

Вы можете сделать это, используя всего одну команду для каждого цветного ряда.

Вот обновленный код:

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
%\usepackage[sexy]{evan}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage[table]{xcolor}
\newcommand{\mycc}{\cellcolor{lightgray}}
\newcommand\colorrow{\rowcolor{lightgray}\cellcolor{white}}

\addtolength{\extrarowheight}{\belowrulesep}
\aboverulesep=0pt
\belowrulesep=0pt

\begin{document}

\begin{center}
  \begin{tabular}{*6{S@{}}S} \toprule
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\ \midrule
    \colorrow
    \text{Trail 1}  &  1.48  &  2.76 &  4.02  &  5.22 &  6.43 &  7.76 \\ \midrule
    \text{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ \midrule
    \colorrow
    \text{Trail 3}  &  1.53  &  2.94 &  4.53  &  5.96 &  7.36 &  8.83 \\ \midrule
    \text{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\ \bottomrule
\end{tabular}

\smallskip

\hfil
\begin{minipage}{0.3\textwidth}
  \textbf{Legend}\\
  \begin{tabular}{ll}
     \mycc This colour & stuff
  \end{tabular}
\end{minipage}
\end{center}

\end{document}

решение2

Используя горизонтальные линии, независимо от того, нарисованы ли они \hlineили \midrule,ицветные (или затененные) ряды ячеек представляют собой смесь двух визуальных метафор, которые могут легко дать обратный эффект. Не делайте этого. Если вы удалите (или закомментируете) директивы \midrule, читабельность таблицы немедленно увеличится — и вам не придется тратить время на беспокойство о том, как избавиться от надоедливых пробелов, окружающих горизонтальные линии.

Отдельный комментарий: вместо того, чтобы выдавать 2*6=12 отдельных \cellcolorдиректив, я бы выдал 2 \rowcolor{lightgray}директивы для двух строк и 2 \cellcolor{white}директивы для первых ячеек в этих двух строках, чтобы переопределить действие директив \rowcolorдля этих ячеек.

введите описание изображения здесь

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage[sexy]{evan} 
\usepackage{booktabs,siunitx}
\usepackage[table]{xcolor}

\begin{document}
\begin{center}
\renewcommand\arraystretch{1.25} % for a more open "look"
\begin{tabular}{@{} l *{6}{S[table-format=1.2]} } 
\toprule
    & {2m} & {4m} & {6m} & {8m} & {10m} & {12m} \\ %\midrule
    \rowcolor{lightgray}%
    \cellcolor{white}%
    Trail 1  & 1.48 & 2.76 & 4.02 & 5.22 & 6.43 & 7.76 \\ %\midrule
    Trail 2  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ %\midrule
    \rowcolor{lightgray}%
    \cellcolor{white}%
    Trail 3  & 1.53 & 2.94 & 4.53 & 5.96 & 7.36 & 8.83 \\ %\midrule
    Trail 4  & 1.80 & 3.46 & 4.94 & 6.49 & 8.20 & 9.85 \\ 
\bottomrule 
\end{tabular}    
\end{center}
\end{document}

решение3

Решение с матрицей TiKz — легенда вписана в пустую строку в конце

введите описание изображения здесь

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\tikzset{ 
    table/.style={
        matrix of nodes,
        nodes={
            rectangle,
            draw=none,
            align=center
        },
        minimum height=1.5em,
        every even row/.style={
            nodes={fill=black!30}
        },
        column 1/.style={
            nodes={text width=4em,font=\bfseries}
        },
    }
}

\begin{tikzpicture}
\matrix (first) [table,text width=4em]
{
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\
|[fill=white]|{Trail 1}  & 1.48  &  2.76 & 4.02  &  5.22 &  6.43 &  7.76 \\ 
{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\
|[fill=white]|{Trail 3}  &  1.53  & 2.94 &  4.53  &  5.96 &  7.36 & 8.83 \\
{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\
&|[fill=white]|{}&&&&&\\
&&|[fill=black!30]|Legend&{defintion}&&&\\
};
\end{tikzpicture}
\end{document}

EDIT Решение с превосходным nicematrixпакетом

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\begin{NiceTabular}{rrrrrrr}[code-before = \rowcolors{1}{white}{blue!15} \columncolor{white}{1}] 
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\
    \text{Trail 1}  & 1.48  &  2.76 & 4.02  &  5.22 &  6.43 &  7.76 \\
    \text{Trail 2}  & 1.53 & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ 
    \text{Trail 3}  &  1.53  & 2.94 &  4.53  &  5.96 &  7.36 & 8.83 \\ 
    \text{Trail 4}  & 1.80  & 3.46 & 4.94  & 6.49 & 8.20  & 9.85 \\ 
\end{NiceTabular}   
\end{document}

и результат

введите описание изображения здесь

Легенду можно разместить в шестом ряду.

решение4

Если вам нужны цветные строки, совместимые с booktabs, вы можете использовать {NiceTabular}среду nicematrix.

\documentclass[11pt]{scrartcl}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}

\begin{center}
\begin{NiceTabular}{SSSSSSS}[colortbl-like] \toprule
    {$m$} & {$2$m} & {$4$m} & {$6$m} & {$8$m} & {$10$m} & {$12$m} \\ \midrule
    \text{Trail 1}  & \rowcolor{lightgray}1.48  & 2.76 & 4.02 & 5.22 & 6.43 & 7.76 \\ \midrule
    \text{Trail 2}  &                     1.53  & 3.21 & 4.76 & 6.32 & 7.81 & 9.47 \\ \midrule
    \text{Trail 3}  & \rowcolor{lightgray}1.53  & 2.94 & 4.53 & 5.96 & 7.36 & 8.83 \\ \midrule
    \text{Trail 4}  &                           & 3.46 & 4.94 & 6.49 & 8.20 & 9.85 \\ \bottomrule 
\end{NiceTabular}    
\end{center}

\end{document}

Однако вам понадобится несколько компиляций.

Вывод кода выше

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