[Tex/LaTex] How to keep group of elements on the same page

page-breaking

I have a custom heading with dynamic content. My content is composed with tabulars, itemize and paragraphs. I am using the environment (samepage) with severals \nopagebreak in each part of the content to ensure that the content between two \nopagebreak will be on a new page or at least will stay together on two pages.

The content is correctly seperated. The problem is the header of the whole content doesn't follow the start of the content. The header stays in page 2 and the content starts at page 3.
Here's the code that I use for the header.

\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{framed}
\usepackage[parfill]{parskip}
\definecolor{shadecolor}{RGB}{217,217,217}
\usepackage[left=0.75in,top=1.5in,right=0.75in,bottom=1in]{geometry}

\begin{document}
\lipsum[1]
\lipsum[2]
\lipsum[3]
\begin{samepage}
\nopagebreak
\begin{snugshade*}{\fontsize{13}{6}\selectfont\textbf{Testing}}\end{snugshade*}
\nopagebreak
\lipsum[4]
\nopagebreak
\lipsum[5]
\nopagebreak
\lipsum[6]
\end{samepage}

\end{document}

I saw that there's the minipage and needspace that I can use for undestructible blocks but the problem is that I have dynamic content so I do not know the lenght of it.
I also try to put \nopagebreak after or before the header but it doesn't work.

My header and the dynamic content are inside one samepage block.

Any ideas how to fix this?

Best Answer

I have seen in the snugshade documentation (here) that it is using a colorbox with a defined color named shadecolor. When i use the colorbox in the code provided, the content are correctly seperated. So i have tried to recreate the snugshade with a tabular like this :

\colorbox{shadecolor}{
\begin{tabular}{@{}>{}p{\linewidth}@{}}
\fontsize{13}{6}\selectfont\textbf{Testing}
\end{tabular}}\\
Related Question