Цвет строки таблицы покрывает текст

Цвет строки таблицы покрывает текст

Я пытаюсь создать таблицу с чередующимися цветами строк, используя xcolorпакет с [table]опцией. Следующий пример демонстрирует, что раскраска строк (раскомментирование \rowcolors..) может скрыть/закрыть содержимое таблицы. В частности, похоже, что проблема с @-выражениями.

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{booktabs}

\begin{document}

\begin{table}
    \footnotesize
    \centering
    %\rowcolors{2}{gray!15}{white}
    \begin{tabular}{lr@{\hspace{.1em}}c@{\hspace{.1em}}lcc}
        &&&& Col 1 & Col 2 \\ \toprule
        Row 1 & $(100$ & $\times$ & $100)$    & $1$ & $2$ \\
        Row 2 & $(100$ & $\times$ & $1000)$& $3$ & $4$ \\
     \bottomrule
\end{tabular}
\end{table}

\end{document}
  1. Как мы можем это предотвратить?
  2. Второй вопрос заключается в том, существует ли простой способ покрыть всю линию цветом; можно заметить белую отбивку в серой линии.

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

решение1

Для первого вопроса вы можете удалить \tabcolsepотдельно для этих двух столбцов, например

r<{\hspace{-\tabcolsep}}>{\hspace{-\tabcolsep}\,}c
                    <{\hspace{-\tabcolsep}\,}>{\hspace{-\tabcolsep}}lcc}

и во-вторых, вы можете определить \bottomrulecлайк

\newcommand{\bottomrulec}{%
  \arrayrulecolor{gray!15}\specialrule{\belowrulesep}{0pt}{0pt}
  \arrayrulecolor{black}\specialrule{\heavyrulewidth}{0pt}{0pt}
  \arrayrulecolor{black}
}

и используйте его вместо \bottomrule. Вот цветные версии для \topruleи \midruleна случай, если они вам понадобятся.

\newcommand{\toprulec}{%
  \arrayrulecolor{black}\specialrule{\heavyrulewidth}{\aboverulesep}{0pt}
  \arrayrulecolor{gray!15}\specialrule{\belowrulesep}{0pt}{0pt}
  \arrayrulecolor{black}
}
\newcommand{\midrulec}{%
  \arrayrulecolor{gray!15}\specialrule{\aboverulesep}{0pt}{0pt}
  \arrayrulecolor{black}\specialrule{\lightrulewidth}{0pt}{\belowrulesep}
}

Ваш код изменен:

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{booktabs}
\newcommand{\bottomrulec}{% Coloured \toprule
  \arrayrulecolor{gray!15}\specialrule{\belowrulesep}{0pt}{0pt}
  \arrayrulecolor{black}\specialrule{\heavyrulewidth}{0pt}{0pt}
  \arrayrulecolor{black}
}

\begin{document}

\begin{table}
    \footnotesize
    \centering
    \rowcolors{2}{gray!15}{white}
    \begin{tabular}{lr<{\hspace{-\tabcolsep}}>{\hspace{-\tabcolsep}\,}c
                        <{\hspace{-\tabcolsep}\,}>{\hspace{-\tabcolsep}}lcc}
        &&&& Col 1 & Col 2 \\ \toprule
        Row 1 & $(100$ & $\times$ & $100)$    & $1$ & $2$ \\
        Row 2 & $(100$ & $\times$ & $1000)$& $3$ & $4$ \\
     \bottomrulec
\end{tabular}
\end{table}

\end{document}

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

решение2

Пустое пространство появляется из-за booktabsдобавления вертикального отступа над и под правилами таблицы. Обходной путь состоит в установке этого отступа на $0$ pt и замене его вертикальным отступом с cellspaceпакетом: он определяетминимальный такой вертикальный интервал и совместим с \rowcolors(спецификатору столбца должна предшествовать буква S).

Что касается проблемы с @{}, я заменяю ее добавлением отрицательного горизонтального интервала при выходе из ячеек во втором столбце и при входе в третий, с помощью >{}и <{}.

\documentclass[preview]{article}
\usepackage{mathtools}
\usepackage{tabularx, booktabs, caption, array}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{cellspace}
\setlength\cellspacetoplimit{6pt}
\setlength\cellspacebottomlimit{6pt}

    \begin{document}

\begin{table}
\setlength\aboverulesep{0pt}
\setlength\belowrulesep{0pt}
 \rowcolors{2}{gray!15}{white}% <{\hskip-\arraycolsep}>{\hskip-\arraycolsep{}}
    $ \begin{array}{Slr <{{}\hskip-\arraycolsep}>{\hskip-\arraycolsep\mkern-.5mu}lcc}
        && & \text{Col 1} & \text{Col 2} \\
        \toprule
        \text{Row 1} & (100 \times{} & 100) & 1 & 2 \\
        \text{Row 2} & (100 \times{} &1000) & 3 & 4 \\
        \bottomrule
    \end{array} $
\end{table}

\end{document} 

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

решение3

Среда {NiceTabular}предоставляет nicematrixинструменты, аналогичные инструментам , colortblно использующие PGF/Tikz для рисования.

Используя эту среду, вы получаете именно то, что хотите (но вам потребуется несколько компиляций, поскольку nicematrixиспользуются узлы PGF/Tikz).

\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\usepackage{booktabs}

\begin{document}

\begin{table}
\footnotesize
\centering

\begin{NiceTabular}{lr@{\hspace{.1em}}c@{\hspace{.1em}}lcc}
\CodeBefore
   \rowcolors{2}{gray!15}{}
\Body
   &&&& Col 1 & Col 2 \\ \toprule
   Row 1 & $(100$ & $\times$ & $100)$    & $1$ & $2$ \\
   Row 2 & $(100$ & $\times$ & $1000)$& $3$ & $4$ \\
\bottomrule
\end{NiceTabular}
\end{table}

\end{document}

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

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