Tentando fazer uma mesa com fundo colorido

Tentando fazer uma mesa com fundo colorido

Estou tentando alterar as cores de fundo e as \hlines, mas o resultado não é o que eu esperava.

Este é o código que eu uso:

\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}

Este é o resultado:

Tabela de fundo com cor errada

Alguém pode me ajudar a consertar e parece melhor?

Responder1

Com um tabularambiente simples, essas mesas coloridas não são muito simples de construir. Em referência às perguntas e respostas existentes sobre as questões decores de fundo em células multilinhaseregras em células multilinhas coloridasvocê poderia fazer o seguinte:

Use números inteiros negativos para \multirowcomandos e coloque o texto na célula inferior. Dessa forma, a cor de fundo da célula nas próximas linhas não cobrirá o texto.

Use o hhlinepacote para desenhar as regras parciais, mas observe que você precisa mudar a cor várias vezes para obter o resultado desejado.

\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}

insira a descrição da imagem aqui

As coisas são mais fáceis de conseguir com otabularrayou onicematrixpacotes. Dê uma olhada neste site para encontrar exemplos ou consulte os manuais vinculados acima.

Responder2

Para informação. Aqui está uma maneira de criar essa tabela com {NiceTabular}of 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}

Saída do código acima

informação relacionada