如何在表格中間使用samepage環境?

如何在表格中間使用samepage環境?

我使用以下程式碼產生文檔:

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

現在,我想確保標題和表格的第一行始終位於同一頁面上。我嘗試使用 和 來做到這一點\begin{samepage}\end{samepage}但問題是它\end{samepage}不能位於表格的中間。我還有什麼其他選擇?

答案1

您沒有X列,因此tabularx這裡沒有做任何有用的事情。您可以使用longtable和防止分頁符號\\*不幸的是longtable總是允許在 a 處分頁,\hline但定義一個不允許分頁的變體很簡單。

在此輸入影像描述

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

答案2

這是一個解決方案。我將 \headline 設為 tabularx 的一部分。不需要拆分錶格

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

相關內容