如何在 supertabular 中禁用 \hline 上的分页符?

如何在 supertabular 中禁用 \hline 上的分页符?

这类似于如何在 longtable 中的 \hline 上禁用分页符?但对于supertabularxtab\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}

相关内容