Попытка сделать таблицу с цветным фоном

Попытка сделать таблицу с цветным фоном

Я пытаюсь изменить цвета фона и \hlines, но результат не тот, что я ожидал.

Вот код, который я использую:

\documentclass[a4paper,10pt,twoside,openright]{scrreprt} 
\usepackage[brazil]{babel} 
\usepackage[pdftex,luatex,usenames,dvipsnames]{color}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx} 
\usepackage{amsmath} 
\usepackage{multirow}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{array} 
\usepackage{colortbl}
\usepackage[sfdefault]{roboto}

\definecolor{azul}{RGB}{31,90,153}
\definecolor{quadro}{RGB}{201,214,229}

\newcommand\mrh{\color{white}\bfseries}
\newcommand\mrc[1]{\begin{tabular}{@{}l@{}} #1 \end{tabular}}
\setlength\arrayrulewidth{1.0pt}

\begin{document}

\begin{table}[tbh]
    \centering
    \caption{Nova tabela avaliação nutricional em crianças menores de 5 anos}
    \renewcommand\arraystretch{1.5}
    \arrayrulecolor{white}
    \begin{small} 
        \begin{tabular}{|l|c|c|c|c|}
            \hline
            \rowcolor{azul} 
            & \mrh{Peso para idade} & \mrh{Peso para estatura} & \mrh{IMC para idade} & \mrh{Estatura para idade} \\ \hline
            \rowcolor{quadro} \textbf{Abaixo de -3 DP} & Muito baixo peso & Magreza acentuada & Magreza acentuada & Muito baixa estatura \\ \hline
            \rowcolor{quadro} \textbf{Entre -3 e -2 DP} & Baixo peso & Magreza & Magreza & Baixa estatura \\ \hline
            \rowcolor{quadro} \textbf{Entre -2 e -1 DP} & \multirow{3}{*}{Peso adequado} & \multirow{2}{*}{Eutrofia} & \multirow{2}{*}{Eutrofia} & \multirow{5}{*}{Estatura adequada} \\ \cline{1-1}
            \rowcolor{quadro} \textbf{Entre -1 e +1 DP} &  &  &  &  \\ \cline{1-1} \cline{3-4}
            \rowcolor{quadro} \textbf{Entre +1 e +2 DP} &  & Risco de sobrepeso & Risco de sobrepeso &  \\ \cline{1-4}
            \rowcolor{quadro} \textbf{Entre +2 e +3 DP} & \multirow{2}{*}{Peso elevado} & Sobrepeso & Sobrepeso &  \\ \cline{1-1} \cline{3-4}
            \rowcolor{quadro} \textbf{Acima de +3 DP} &  & Obesidade & Obesidade &  \\ \hline
        \end{tabular}
    \end{small}%
    \\
    \centering
    \footnotesize{\textbf{Fonte:} adaptado do Manual de Avaliação Nutricional da Sociedade Brasileira de Pediatria (2009)}
\end{table}

\end{document}

Вот результат:

Неправильный цвет фона таблицы

Может ли кто-нибудь помочь мне это исправить и сделать так, чтобы это выглядело лучше?

решение1

С помощью простогоtabular среде такие цветные таблицы не так уж и просты в построении. В отношении существующих вопросов и ответов по проблемамЦвета фона в многорядных ячейкахиправила в цветных многострочных ячейкахВы можете сделать следующее:

Используйте отрицательные целые числа для \multirowкоманд и поместите текст в самую нижнюю ячейку. Таким образом, цвет фона в ячейке в следующей строке(ах) не будет закрывать текст.

Используйте hhlineпакет для рисования частичных правил, но учтите, что вам придется менять цвет несколько раз, чтобы получить желаемый результат.

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage{multirow, hhline, colortbl}
\usepackage[sfdefault]{roboto}

\definecolor{azul}{RGB}{31,90,153}
\definecolor{quadro}{RGB}{201,214,229}

\newcommand\mrh{\color{white}\bfseries}
\newcommand\mrc[1]{\begin{tabular}{@{}l@{}} #1 \end{tabular}}
\setlength\arrayrulewidth{1.0pt}

\begin{document}

\begin{table}
    \caption{Nova tabela avaliação nutricional em crianças menores de 5 anos}
    \renewcommand\arraystretch{1.5}
    \arrayrulecolor{white}
    \begin{small} 
        \begin{tabular}{|l|c|c|c|c|}
            \hline
            \rowcolor{azul} 
            & \mrh{Peso para idade} & \mrh{Peso para estatura} & \mrh{IMC para idade} & \mrh{Estatura para idade} \\ \hline
            \rowcolor{quadro} \textbf{Abaixo de -3 DP} & Muito baixo peso & Magreza acentuada & Magreza acentuada & Muito baixa estatura \\ \hline
            \rowcolor{quadro} \textbf{Entre \textminus 3 e \textminus 2 DP} & Baixo peso & Magreza & Magreza & Baixa estatura \\ \hline
            \rowcolor{quadro} \textbf{Entre \textminus 2 e \textminus 1 DP} &  &  &  &  \\ 
                \hhline{>{\arrayrulecolor{white}}->{\arrayrulecolor{quadro}}----}
            \rowcolor{quadro} \textbf{Entre \textminus 1 e +1 DP} &  & \multirow{-2}{*}{Eutrofia} & \multirow{-2}{*}{Eutrofia} & \\ 
                \hhline{>{\arrayrulecolor{white}}->{\arrayrulecolor{quadro}}->{\arrayrulecolor{white}}-->{\arrayrulecolor{quadro}}-}
            \rowcolor{quadro} \textbf{Entre +1 e +2 DP} & \multirow{-3}{*}{Peso adequado} & Risco de sobrepeso & Risco de sobrepeso &  \\ 
                \hhline{>{\arrayrulecolor{white}}---->{\arrayrulecolor{quadro}}-}
            \rowcolor{quadro} \textbf{Entre +2 e +3 DP} &  & Sobrepeso & Sobrepeso &  \\ 
                \hhline{>{\arrayrulecolor{white}}->{\arrayrulecolor{quadro}}->{\arrayrulecolor{white}}-->{\arrayrulecolor{quadro}}-}
            \rowcolor{quadro} \textbf{Acima de +3 DP} & \multirow{-2}{*}{Peso elevado} & Obesidade & Obesidade & \multirow{-5}{*}{Estatura adequada} \\ \hline
        \end{tabular}
    \end{small}%
    \\
    \centering
    \footnotesize{\textbf{Fonte:} adaptado do Manual de Avaliação Nutricional da Sociedade Brasileira de Pediatria (2009)}
\end{table}

\end{document}

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

С помощью этого легче добитьсяtabularrayилиnicematrixпакеты. Просмотрите этот сайт, чтобы найти примеры, или посмотрите руководства, ссылки на которые приведены выше.

решение2

Для информации. Вот способ создания этой таблицы с {NiceTabular}помощью nicematrix.

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage[sfdefault]{roboto}
\usepackage{nicematrix}
\usepackage{xcolor}

\begin{document}

\begin{table}
\caption{Nova tabela avaliação nutricional em crianças menores de 5 anos}
\renewcommand\arraystretch{1.5}
\centering
\small
\begin{NiceTabular}{lcccc}[hvlines-except-borders,rules={color=white,width=1pt}]
\CodeBefore
  \rowcolor[RGB]{31,90,153}{1}
  \rowcolor[RGB]{201,214,229}{2-*}
\Body
                                     & Peso para idade            & Peso para estatura    & IMC para idade        & Estatura para idade \\ 
Abaixo de -3 DP                      & Muito baixo peso           & Magreza acentuada     & Magreza acentuada     & Muito baixa estatura \\ 
Entre \textminus 3 e \textminus 2 DP & Baixo peso                 & Magreza               & Magreza               & Baixa estatura \\ 
Entre \textminus 2 e \textminus 1 DP & \Block{3-1}{Peso adequado} & \Block{2-1}{Eutrofia} & \Block{2-1}{Eutrofia} & \Block{5-1}{Estatura adequada} \\ 
Entre \textminus 1 e +1 DP           &                            &                       &                       & \\ 
Entre +1 e +2 DP                     &                            & Risco de sobrepeso \\
Entre +2 e +3 DP                     & \Block{2-1}{Peso elevado}  & Sobrepeso             & Sobrepeso \\
Acima de +3 DP                       &                            & Obesidade             & Obesidade \\
\end{NiceTabular} \\
\footnotesize{\textbf{Fonte:} adaptado do Manual de Avaliação Nutricional da Sociedade Brasileira de Pediatria (2009)}
\end{table}

\end{document}

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

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