Como usar o ambiente Samepage no meio de uma tabela?

Como usar o ambiente Samepage no meio de uma tabela?

Eu uso o seguinte código para gerar um documento:

\documentclass[10pt]{article}

\usepackage{ltablex}
\usepackage[top=2.5cm, bottom=2.5cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{bibentry}
\usepackage{etoolbox}
\usepackage{helvet}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{color}  
\usepackage{colortbl}
\usepackage{url}
\usepackage{fancyhdr}
\usepackage{datenumber}
\usepackage{xspace}
\usepackage{blindtext}

%Column width for tables
\def \firstColumnWidth {3.5cm}
\def \secondColumnWidth {12.5cm}

%This is the headline
\newcommand{\headline}[1] {
\section*{#1}
\vspace{-1.75em}
\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}
\vspace{-1.75em}
}

\begin{document}

\headline{Test A}
\noindent\begin{tabularx}{\textwidth}{p{\firstColumnWidth}p{\secondColumnWidth}}
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2015}\\
Foo & \blindtext\\
Bar & \blindtext\\
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2014}\\
Foo & \blindtext\\
Bar & \blindtext\\
\end{tabularx}

\headline{Test B}
\noindent\begin{tabularx}{\textwidth}{p{\firstColumnWidth}p{\secondColumnWidth}}
Foo & \blindtext\\
Bar & \blindtext\\
\end{tabularx}

\end{document}

Agora, quero ter certeza de que o título e a primeira linha de uma tabela estejam sempre na mesma página. Tentei fazer isso com \begin{samepage}e \end{samepage}, mas o problema é que \end{samepage}não pode ficar no meio da mesa. Que outras opções eu tenho?

Responder1

Você não tem Xcolunas, então tabularxnão está fazendo nada de útil aqui. Você pode simplesmente usar longtablee evitar quebras de página com \\*Infelizmente longtablesempre permite uma quebra, \hlinemas é simples definir uma variante que não permite.

insira a descrição da imagem aqui

\documentclass[10pt]{article}

\usepackage[top=2.5cm, bottom=2.5cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{helvet}
\usepackage[table]{xcolor}
\usepackage{blindtext}
\usepackage{longtable}

\makeatletter
\def\nbhline{%no break hline
\noalign{%
  \global\let\tmp\@lowpenalty
  \gdef\@lowpenalty{-10000 }}%
\hline
\noalign{\global\let\@lowpenalty\tmp}}

\makeatother

\setlength\extrarowheight{2pt}
%Column width for tables
\def \firstColumnWidth {3.5cm}
\def \secondColumnWidth {12.5cm}

%This is the headline
\newcommand\headline[1]{%
\noalign{\medskip}%
\multicolumn{2}{@{}l}{\large\bfseries#1}\\*\nbhline
\noalign{\nobreak\smallskip}}

\begin{document}

\begin{longtable}{p{\firstColumnWidth}p{\secondColumnWidth}}
\headline{Test A}
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2015}\\
Foo & \blindtext\\
Bar & \blindtext\\
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2014}\\
Foo & \blindtext\\
Bar & \blindtext\\
\headline{Test B}
Foo & \blindtext\\
Bar & \blindtext\\
\end{longtable}

\end{document}

Responder2

Aqui está uma solução. Eu faço \headline parte do tabularx. Não há necessidade de dividir tabular

\documentclass[10pt]{article}

\usepackage{ltablex}
\usepackage[top=2.5cm, bottom=2.5cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{bibentry}
\usepackage{etoolbox}
\usepackage{helvet}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{color}  
\usepackage{colortbl}
\usepackage{url}
\usepackage{fancyhdr}
\usepackage{datenumber}
\usepackage{xspace}
\usepackage{blindtext}

%Column width for tables
\def \firstColumnWidth {3.5cm}
\def \secondColumnWidth {12.5cm}

%This is the headline
\newcommand{\headline}[1] {%
\multicolumn{2}{@{}p{\textwidth}}{\Large\bfseries #1\par
\vspace{-.75em}
\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}}\\*}

\begin{document}

\begin{tabularx}{\textwidth}{p{\firstColumnWidth}p{\secondColumnWidth}}
\headline{Test A}
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2015}\\
Foo & \blindtext\\
Bar & \blindtext\\
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2014}\\
Foo & \blindtext\\
Bar & \blindtext\\
\end{tabularx}

\begin{tabularx}{\textwidth}{p{\firstColumnWidth}p{\secondColumnWidth}}
\headline{Test B}
Foo & \blindtext\\
Bar & \blindtext\\
\end{tabularx}



\begin{tabularx}{\textwidth}{p{\firstColumnWidth}p{\secondColumnWidth}}
\headline{Test A}
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2015}\\
Foo & \blindtext\\
Bar & \blindtext\\
\multicolumn{2}{c}{\cellcolor[gray]{0.75}2014}\\
Foo & \blindtext\\
Bar & \blindtext\\
\headline{Test B}
Bar & \blindtext\\
Bar & \blindtext\\
Foo & \blindtext\\
Bar & \blindtext\\
Bar & \blindtext\\
Bar & \blindtext\\
Bar & \blindtext\\
Bar & \blindtext\\
\headline{Test C}
Foo & \blindtext\\
Bar & \blindtext\\
\end{tabularx}

\end{document}

informação relacionada