仅允许在 longtable at 规则中进行分页

仅允许在 longtable at 规则中进行分页

我有一个longtable包含由 s 分隔的行组的表格\midrule。我想禁止在这些组内进行分页,即让每个\\行都表现得像\\*(不写星号)。

我曾尝试说\global\let\asdf\\ \gdef\\{\asdf*},但由于一些我不完全清楚的原因,失败了。

我怎样才能表现\\得像\\*

答案1

您可以在内部命令中交换 \@ifstar 的参数,然后\\将是不可破坏的变体和\\*可破坏的变体:

\documentclass{article}

\usepackage{longtable,booktabs}

\makeatletter
\def\LT@tabularcr{%
  \relax\iffalse{\fi\ifnum0=`}\fi
  \@ifstar
    {\LT@t@bularcr}
    {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
     \LT@t@bularcr}%
    }
   \makeatother
   \textheight=20pt %for test
\begin{document}
\begin{longtable}{l}
a\\a\\*a\\a\\\midrule a\\a\\a\\a
\end{longtable}

\end{document}

相关内容