Раскрашивание таблиц с несколькими строками и несколькими столбцами

Раскрашивание таблиц с несколькими строками и несколькими столбцами

Я пытаюсь получить фоновый цвет для моих таблиц, состоящий из multirowsи multicolums. Без какого-либо цвета таблица работает нормально. Но то, что я хочу раскрасить, распространяется на разное количество строк. Я пытался раскрасить четыре строки одним и тем же цветом, с одной ячейкой, растянутой на четыре строки, и одной ячейкой, растянутой на две строки.

Но если я сделаю это во второй раскраске, цвет будет применен поверх многострочного текста. таблица без цвета

таблица с текстом

Как вы можете видеть, вторая строка rowcolorудаляет верхнюю часть 'Grade' из cell 1и третья строка цвета удаляет нижнюю часть 'Grade' и нижнюю часть Thickness. Есть идеи решения?

мой текс:

\begin{table}[ht]
\begin{tabular}{|c|c|lll|}
\hline
\rowcolor{blue!20} 
\multirow{4}{*}{Grades}&Yield&\multicolumn{3}{c|}{Impact bending test}\\
\rowcolor{blue!20}
                      &Strength&\multirow{2}{*}{Thickness}&Test& Impact\\
\rowcolor{blue!20}
                             &$\mathbf{R_e[N/mm^2]}$&                                &{\bf temperature}     & {\bf work}\\
\rowcolor{blue!20}
                             &\bf{transv.min.}      &\bf{ transv.}                   &$\mathbf{[\grader]}$  & {\bf [J]} \\\hline
\multirow{ 1}{*}{{\bf DH36}}   &     & {\bf 5.5 – 7.0} & {\bf         -40} & {\bf       24} \\

\hline
\end{tabular}
\end{table}

решение1

На основе догадок о вашей преамбуле и значении используемых команд:

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

\documentclass{article}
\usepackage{siunitx}
\usepackage{makecell,multirow}
\usepackage[table]{xcolor}

\begin{document}
    \begin{table}[htb]
\sisetup{detect-weight=true}
\renewcommand\arraystretch{1.3}
\begin{tabular}{|*{2}{>{\bfseries}c|}
                 *{3}{>{\bfseries}c}|}
    \hline
\rowcolor{blue!20}
                &   &   \multicolumn{3}{c|}{\textbf{Impact bending test}}    \\
\rowcolor{blue!20}
\multirow{-2}*{Grades}  
        &   \multirow{-3}*[-1ex]{\makecell{Yield\\  Strength\\ 
                                            {$\mathbf{R_e[\si{N\per\milli\meter^2}]}$} \\transv. min.}}
                    &   \makecell{Thickness\\  transv.}    
                        &   \makecell{Test\\ temperature\\ \si{\celsius}}
                            &   \makecell{Impact\\ work\\ \si{J} }          \\
    \hline
DH36   &       & 5.5 – 7.0 & -40   & 24    \\
    \hline
\end{tabular}
    \end{table}
\end{document}

Редактировать: макрос makecellимеет опции bдля нижнего положения, tдля верхнего положения, lдля выравнивания содержимого ячейки по левому краю и rдля выравнивания по правому краю. При использовании его без опций содержимое ячейки центрируется по вертикали и горизонтали.

Если в приведенном выше MWE замените вторую строку таблицы на

\multirow{-3}*{Grades}
        &   \multirow{-3}*[3pt]{\makecell{Yield\\  Strength\\
                                            {$\mathbf{R_e[\si{N\per\milli\meter^2}]}$} \\transv. min.}}
                    &   \makecell[b]{Thickness\\  transv.}
                        &   \makecell[b]{Test\\ temperature\\ \si{\celsius}}
                            &   \makecell[b]{Impact\\ work\\ \si{J} }          \\

то таблица выглядит следующим образом:

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

решение2

Вот как можно сделать эту таблицу с {NiceTabular}помощью nicematrix. Вы не увидите тонких белых линий, какой бы просмотрщик PDF вы ни использовали.

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

\begin{document}

\begin{table}[htb]
\sisetup{detect-weight=true}
\renewcommand\arraystretch{1.3}
\begin{NiceTabular}{|c|c|ccc|}[cell-space-top-limit=3pt]
\Hline
\RowStyle[nb-rows=2,rowcolor=blue!20]{\bfseries}
\Block{2-1}{Grades} 
   & \Block{2-1}{Yield\\ Strength\\ $\mathbf{R_e[\unit{N\per\milli\meter^2}]}$ \\transv. min.}  
     & \Block{1-3}{Impact bending test}  \\
   &   
     & \Block{}{Thickness\\  transv.}    
       & \Block{}{Test\\ temperature\\ \unit{\celsius}}
          & \Block{}{Impact\\ work\\ \unit{J}}   \\
\Hline
DH36  &  & $5.5$ -- $7.0$ & $-40$ & $24$    \\
\Hline
\end{NiceTabular}
\end{table}

\end{document}

Вам нужно несколько компиляций (т.к. nicematrixвнутри используются узлы PGF/Tikz).

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

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