Я хотел бы раскрасить всю строку "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}
Однако вам понадобится несколько компиляций.