# How to control table page breaking using \longtabu, \multirow, colortbl and \hhline

I have a probably quite specific LaTeX problem using tables, due to the needed specification of the table, which are (mainly):

• I need support for multiple pages
• I need a lot of multicolumns
• I need colored cells
• I need the possibility to control page breaks in the table (This means, I have blocks of rows that have to stay together [see MWE])
• I need partial table rules and want to see them ;-)

I used a specific cline version first (included in the MWE), which adds the page breaking control, but \cline is not compatible with colortbl ( Cellcolor overwrites partial horizontal lines (\cline) ). So I changed to \hhline, but now I have lost page break control, which is important.

So my main question is: Is it possible to use \hhline and have control of the page breaks at the same time?

I know it probably has to do with a penality, but I don't know how I may add it, or if it is even possible.

P.S.: I know that \hhline produces unwanted white lines, but there is a way to fix it ( \hhline adds white line where no line is intended ). I just left it out of the MWE to keep it smaller.

This is my MWE:

\documentclass[10pt,a7paper,oneside]{scrartcl}

\usepackage{longtable,tabu}
\usepackage{multirow}
\usepackage{xcolor,colortbl}
\usepackage{hhline}

% No-break cline version
\makeatletter
\def\@cline#1-#2\@nil{%
\omit
\@multicnt#1%
\ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
\@multicnt#2%
\cr
\noalign{\nobreak\vskip-\arrayrulewidth}}
\makeatother

% Shortcut
\newcommand{\cc}[1]{\cellcolor{#1}}

\begin{document}
\begin{longtabu} to \textwidth {|X|X|X|}

\hline
\multicolumn{3}{|l|}{\cc{yellow}Main Entry} \\*
\hhline{|~|-|-|}

% No break control :(
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \hhline{|~|-|-|}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\ \hline

\multicolumn{3}{|l|}{\cc{yellow}Main Entry} \\*
\cline{2-3}

% Break control, but no rules :(
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\ \hline

\multicolumn{3}{|l|}{\cc{yellow}Main Entry} \\*
\cline{2-3}

{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\* \cline{2-3}
{\cc{yellow}} & {\cc{red}Sub} & {\cc{red}Val} \\ \hline

& & \kill % Needed for correct table calculation

\end{longtabu}
\end{document}


Page one of the table:

Both pages - with cline, I can control the page breaks:

• Welcome to TeX.SX! – Bobyandbob Sep 18 '17 at 8:32
• \pagebreak[3] is supposed to encourage a break at that location, but it rarely has any effect. The needspace package does a better job, if you know how much space you need. – John Kormylo Sep 18 '17 at 19:37