我有一个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}