这类似于如何在 longtable 中的 \hline 上禁用分页符?但对于supertabular
或xtab
:\tabularnewline\hline
我得到分页符(或在我的情况下是分栏符)前水平线,即水平线出现在下一列的顶部。我正在使用此代码在 里面做supertabular
工作multicols
.
我怎样才能改变这一点,以便线和行保持在一起?
答案1
这采用了您引用的问题中的示例并重新定义了超级标签\\
以在分页代码之前提前查看\hline
并将其吸回。这个版本不关心\hline\hline
但可以扩展。
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{xcolor,supertabular,multicol}
\newcount\n
\n=0
\def\tablebody{}
\makeatletter
\let\zz\hline
\let\hline\relax
\loop\ifnum\n<300
\advance\n by1
\protected@edef\tablebody{\tablebody
\textbf{\number\n.}&
\hfill T\hfill\hfill F\hfill\hskip0pt\endgraf
\vskip.5\baselineskip
\color@begingroup
\color{black!20}
\hrule height3ex
\color@endgroup
\tabularnewline\hline
}
\repeat
\makeatother
\let\hline\zz
\pagestyle{empty}
\begin{document}
\begin{multicols*}{2}
\let\mcnewpage=\newpage
\makeatletter
\renewcommand\newpage{%
\if@firstcolumn
\hrule width\linewidth height0pt
\columnbreak
\else
\mcnewpage
\fi
}
\let\savedST@cr\ST@cr
\def\ST@cr{\noalign{\ifnum0=`}\fi\futurelet\st@temp\ST@crhline}
\def\ST@crhline{%
\ifx\st@temp\hline
\global\let\next@a\hline
\global\let\next@b\@gobble
\else
\global\let\next@a\@empty
\global\let\next@b\@empty
\fi
\ifnum0=`{\fi}%
\next@a
\savedST@cr
\next@b}
\makeatother
\tablehead{Item \#&\\}
\begin{supertabular}{lp{1.5in}}
\tablebody
\end{supertabular}
\end{multicols*}
\end{document}