4

I am trying to setup a table with \hhline and \cellcolor. After I got it so far, that I don't see \hhlines in the colored cells I am now missing the black \hhlines which should separate the cells. This is how it should look like:

enter image description here

Here's what I have: enter image description here

\documentclass{article}
% General document formatting
\usepackage[margin=0.7in]{geometry}
\usepackage[parfill]{parskip}
\usepackage[utf8]{inputenc}
\usepackage{multirow, hhline}

% Related to math
\usepackage{amsmath,amssymb,amsfonts,amsthm}
\usepackage{multirow}
\usepackage[table,xcdraw]{xcolor}



\begin{document}    
    \begin{table}[!ht]  
        \centering
        \begin{tabular}{|c|c|c|}
            \hhline{*{1}{-}}
            {\cellcolor[HTML]{C0E5C6}}Modell-Überkategorien   &\multicolumn{2}{c}{}    \\ 
            \cline{1-1}
            statisch                &\multicolumn{2}{c}{}   \\ 
            \cline{1-1}
            zufällig (Monte-Carlo)  &\multicolumn{2}{c}{}   \\ 
            \hhline{*{3}{-}}            
            \cellcolor[HTML]{E2EFD9} & \cellcolor[HTML]{E2EFD9} Kontinuirlich & \cellcolor[HTML]{E2EFD9} \\
            \hhline{>{\arrayrulecolor[HTML]{E2EFD9}}->{\arrayrulecolor{black}}->{\arrayrulecolor[HTML]{E2EFD9}}-}
            \cellcolor[HTML]{E2EFD9} & \cellcolor[HTML]{E2EFD9} Hybrid & \cellcolor[HTML]{E2EFD9}\\
            \hhline{>{\arrayrulecolor[HTML]{E2EFD9}}->{\arrayrulecolor{black}}->{\arrayrulecolor[HTML]{E2EFD9}}-} \multirow{-3}{*}{{\cellcolor[HTML]{E2EFD9}}dynamisch} 
            & \cellcolor[HTML]{E2EFD9} Diskret & \cellcolor[HTML]{E2EFD9} \multirow{-3}{*}{Raum/Zeit}  \\ 
            \hline
            \cellcolor[HTML]{E2EFD9} (Multi)-Agenten basiert &\multicolumn{2}{c}{} \\ 
            \hhline{*{1}{-}}
        \end{tabular}
        \bigskip
    \end{table}
\end{document}

I have two missing hhlines and theres some small spaces inbetween the borders of the multirow cells. Is there a way to fix this issue?

  • Welcome to TeX.SE! Pleas add preamble to your code fragment. You probably have problems with poor rendering of your pdf viewer. – Zarko Jun 4 '19 at 20:21
4

I have two MWEs: the last one cure both problems, the first does not cure the small green spaces.

Using hhline

You have forgotten to turn on arrayrowcolor{black} two places. In addition, the hhline- syntax was wrong one place. I have not found a solution for the small spaces in the horizontal borders (yet). It is the green coloured arrayrule under the multirow that overwrite the vertical line.

Not related: You load multirow twice.

\documentclass{article}
% General document formatting
\usepackage[margin=0.7in]{geometry}
\usepackage[parfill]{parskip}
\usepackage[utf8]{inputenc}
\usepackage{multirow, hhline}

% Related to math
\usepackage{amsmath,amssymb,amsfonts,amsthm}
\usepackage[table,xcdraw]{xcolor}

\renewcommand{\arraystretch}{1.2}
\setlength{\extrarowheight}{1pt}

\begin{document}    
    \begin{table}[!ht]  
        \centering
        \begin{tabular}{|c|c|c|}
            \hhline{-~~}
            {\cellcolor[HTML]{C0E5C6}}Modell-Überkategorien   &\multicolumn{2}{c}{}    \\ 
            \hhline{-~~}
            statisch                &\multicolumn{2}{c}{}   \\ 
            \hhline{-~~}
            zufällig (Monte-Carlo)  &\multicolumn{2}{c}{}   \\ 
            \hhline{*{3}{-}}            
            \cellcolor[HTML]{E2EFD9} & \cellcolor[HTML]{E2EFD9} Kontinuirlich & \cellcolor[HTML]{E2EFD9} \\
            \hhline{>{\arrayrulecolor[HTML]{E2EFD9}}->{\arrayrulecolor{black}}->{\arrayrulecolor[HTML]{E2EFD9}}-}\arrayrulecolor{black}
            \cellcolor[HTML]{E2EFD9} & \cellcolor[HTML]{E2EFD9} Hybrid & \cellcolor[HTML]{E2EFD9}\\
            \hhline{>{\arrayrulecolor[HTML]{E2EFD9}}->{\arrayrulecolor{black}}->{\arrayrulecolor[HTML]
{E2EFD9}}-}\arrayrulecolor{black}
\multirow{-3}{*}{{\cellcolor[HTML]{E2EFD9}}dynamisch} 
            & \cellcolor[HTML]{E2EFD9} Diskret & \cellcolor[HTML]{E2EFD9} \multirow{-3}{*}{Raum/Zeit}  \\ 
            \hhline{|---}
            \cellcolor[HTML]{E2EFD9} (Multi)-Agenten basiert &\multicolumn{2}{c}{} \\ 
            \hhline{|-~~}
        \end{tabular}
        \bigskip
    \end{table}
\end{document}

enter image description here

Using cals

Your tabular is much easier to build using cals.

\documentclass{article}
% General document formatting
\usepackage[margin=0.7in]{geometry}
\usepackage[parfill]{parskip}
\usepackage[utf8]{inputenc}
\usepackage{cals}

% Related to math
\usepackage{amsmath,amssymb,amsfonts,amsthm}
\usepackage[table,xcdraw]{xcolor}

\let\nc=\nullcell                                                  % Shortcuts
\let\sc=\spancontent

\definecolor{darkGreen}{HTML}{C0E5C6}
\definecolor{lightGreen}{HTML}{E2EFD9}


\begin{document}

\begin{calstable}

% Defining 3 column relativ to each other and relativ to the margins
\colwidths{{\dimexpr(\columnwidth/16*4)\relax}
            {\dimexpr(\columnwidth/16*3)\relax}
            {\dimexpr(\columnwidth/16*3)\relax}
            }
% The tabular fills 5/8 of the text area

% Set up the tabular
\makeatletter
\def\cals@framers@width{0.4pt}   % Outside frame horizontal rules
\def\cals@framecs@width{0.4pt}   % Outside frame horizontal rules, reduce
                                 % thickness if you find them too heavy
\cals@setpadding{Ag}
\cals@setcellprevdepth{Al}
\def\cals@cs@width{0.4pt}        % Inside rules, reduce if the rule is too heavy
\def\cals@rs@width{0.4pt}
\def\cals@bgcolor{}              % Define cals@bgcolor to empty

\def\green{\ifx\cals@bgcolor\empty      % Colour switch (on-off)
    \def\cals@bgcolor{darkGreen}
\else \def\cals@bgcolor{} \fi}

\def\lgreen{\ifx\cals@bgcolor\empty     % Colour switch (on-off)
    \def\cals@bgcolor{lightGreen}
\else \def\cals@bgcolor{} \fi}

\def\tb{\ifx\cals@borderT\relax     % Top border switch (off-on)
    \def\cals@borderT{0pt}
\else \let\cals@borderT\relax\fi}

\def\bb{\ifx\cals@borderB\relax     % Botton border switch (off-on)
    \def\cals@borderB{0pt}
\else \let\cals@borderB\relax\fi}

\def\rb{\ifx\cals@borderR\relax     % Right border switch (off-on)
    \def\cals@borderR{0pt}
\else \let\cals@borderR\relax\fi}

% R1 Body
\brow
    \green\alignC\cell{Modell-Überkategorien}\green
    \tb\rb\nc{lt}
    \nc{rt}\tb\rb
\erow
% R2 Body
\brow
    \cell{statisch}
    \rb\nc{l}
    \nc{r}\rb
\erow
% R3 Body
\brow
    \cell{zufällig (Monte-Carlo)}
    \rb\nc{lb}
    \nc{rb}\sc{}\rb
\erow
% R4 Body
\brow
    \lgreen\nc{lrt}
    \cell{Kontinuirlich}
    \nc{lrt}
\erow
% R5 Body
\brow
    \nc{lr}
    \cell{Hybrid}
    \nc{lr}
\erow
% R6 Body
\brow
    \nc{lrb}\sc{\vfil dynamisch}
    \cell{Diskret}
    \nc{lrb}\sc{\vfil Raum/Zeit}
\erow
% R7 Body
\brow
    \cell{(Multi)-Agenten basiert}\lgreen
    \rb\bb\nc{ltb}
    \nc{rtb}\sc{}\bb\rb
\erow
\makeatletter
\end{calstable}\par % \par needed to align the tabular

\end{document}

enter image description here

| improve this answer | |
  • Wow awesome. Thanks a lot! – madibat Jun 5 '19 at 15:33
2

Small modification of first example (+1) regarding use of colors in table in the nice Sveinung answer (for exercise)):

\documentclass{article}
% General document formatting
\usepackage[margin=0.7in]{geometry}
\usepackage[parfill]{parskip}
\usepackage[utf8]{inputenc}
\usepackage{multirow, hhline}

% Related to math
\usepackage{amsmath,amssymb,amsfonts,amsthm}
\usepackage[table,xcdraw]{xcolor}
\definecolor{col1}{HTML}{C0E5C6}    % <---
\definecolor{col2}{HTML}{E2EFD9}    % <---

\renewcommand{\arraystretch}{1.2}
\setlength{\extrarowheight}{1pt}

\begin{document}
    \begin{table}[!ht]
    \centering
\begin{tabular}{|c|c|c|}
    \hhline{-~~}
\cellcolor{col1}{Modell-Überkategorien} % <---
                        &   \multicolumn{2}{c}{}    \\
    \hhline{-~~}
statisch                &   \multicolumn{2}{c}{}    \\
    \hhline{-~~}
zufällig (Monte-Carlo)  &   \multicolumn{2}{c}{}    \\
    \hhline{*{3}{-}}
\rowcolor{col2} 
                        & Kontinuirlich &           \\  % <---
    \hhline{>{\arrayrulecolor{col2}}-%
            >{\arrayrulecolor{black}}-%
            >{\arrayrulecolor{col2}}-}
    \arrayrulecolor{black}
\rowcolor{col2} 
                        & Hybrid        &           \\
    \hhline{>{\arrayrulecolor{col2}}-%
            >{\arrayrulecolor{black}}-%
            >{\arrayrulecolor{col2}}-}
    \arrayrulecolor{black}
\rowcolor{col2}
\multirow{-3}{*}{dynamisch}
                        & Diskret       & \multirow{-3}{*}{Raum/Zeit}   \\
    \hhline{|---}
\cellcolor{col2} (Multi)-Agenten basiert
                        &   \multicolumn{2}{c}{}    \\
    \hhline{|-~~}
\end{tabular}
    \end{table}
\end{document}

Result is the same as in his answer.

| improve this answer | |
  • Thank you @Zarko. I planned to clean up my code, but now there is no need for that :). – Sveinung Jun 5 '19 at 17:44
1

Here is a solution with nicematrix. In {NiceTabular} of nicematrix you have a key hvlines-except-corners which will draw all the rules excepted in the blocks and in the corners. That's what we need here.

\documentclass{article}
\usepackage{nicematrix}

\renewcommand{\arraystretch}{1.2}
\setlength{\extrarowheight}{1pt}

\begin{document}
\begin{table}[!ht]
\centering
\begin{NiceTabular}{ccc}%
  [hvlines-except-corners,
   code-before = \cellcolor[HTML]{C0E5C6}{1-1}
                 \rowcolor[HTML]{E2EFD9}{4-6}
                 \cellcolor[HTML]{E2EFD9}{7-1}
  ]              
Modell-Überkategorien \\
statisch \\
zufällig (Monte-Carlo)  \\
\Block{3-1}{dynamisch} & Kontinuirlich & \Block{3-1}{} \\
                       & Hybrid        & Raum/Zeit \\
                       & Diskret \\
(Multi)-Agenten basiert
\end{NiceTabular}
\end{table}
\end{document}

Remarks:

  • You need to compile twice (because informations, in particular for the PGF/Tikz nodes created under the array by nicematrix, are written on the aux file after the first compilation).
  • With nicematrix, you won't have artefacts in some PDF viewers at some level of zoom (as you can have with PDF created with colortbl).

Ouput of the above code

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.