Longtabu,\tabucline 放在错误页面上

Longtabu,\tabucline 放在错误页面上

请参阅以下longtabu示例:

\documentclass{article}

\usepackage{longtable}
\usepackage{booktabs}
\usepackage{tabu}

\usepackage{lipsum}

\begin{document}

\tabulinesep=1.5mm    % <---- seems like this is causing the issue

\def\head{Head A & Head B}
\def\nbcolumns{2}
\begin{longtabu}{X[.5,l] X[1,l]}
  \toprule\rowfont{\bfseries}
  \head\\
  \midrule
  \endfirsthead
%
  \multicolumn{\nbcolumns}{l}{\scriptsize\itshape\ldots Fortsetzung}\\
  \toprule\rowfont{\bfseries}
  \head\\
  \midrule
  \endhead
%
  \multicolumn{\nbcolumns}{r}{\scriptsize\itshape wird fortgesetzt \ldots}
  \endfoot
  \endlastfoot
%
  \everyrow{\tabucline[on 3 pt off 3pt]-}
  1 & \lipsum[2] \\
  2 & \lipsum[2] \\
  3 & \lipsum[2] \\
  4 & \lipsum[2] \\
  5 & \lipsum[2] \\
  6 & \lipsum[2] \\
  7 & \lipsum[2] \\
  8 & \lipsum[2] 
  \everyrow{}\\
  \bottomrule
  \caption{Table name}
\end{longtabu}

\end{document}

...以及生成的文档:

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

从第 1 页到第 2 页的分页符与预期一致。

但是从第 2 页到第 3 页的分页符存在问题。第 3 页顶部的第一条虚线应放在第 2 页的底部。

我该如何修复它?

或者我应该考虑使用替代方案longtabu

答案1

在此处输入图片描述

您可以\nobreak在不鼓励使用禁忌行之前添加 so 换行,并\filbreak在鼓励使用禁忌行之后添加 so 换行(并用空格填充)。

\documentclass{article}

\usepackage{longtable}
\usepackage{booktabs}
\usepackage{tabu}

\makeatletter
\renewcommand*\tabucline{\noalign{\nobreak\ifnum0=`}\fi \tabu@cline}


\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@\filbreak}%
              \ifnum0=`{\fi}\aftergroup\tabu@doclineafter}

\makeatother

\usepackage{lipsum}

\begin{document}

\tabulinesep=1.5mm    % <---- seems like this is causing the issue

\def\head{Head A & Head B}
\def\nbcolumns{2}
\begin{longtabu}{X[.5,l] X[1,l]}
  \toprule\rowfont{\bfseries}
  \head\\
  \midrule
  \endfirsthead
%
  \multicolumn{\nbcolumns}{l}{\scriptsize\itshape\ldots Fortsetzung}\\
  \toprule\rowfont{\bfseries}
  \head\\
  \midrule
  \endhead
%
  \multicolumn{\nbcolumns}{r}{\scriptsize\itshape wird fortgesetzt \ldots}
  \endfoot
  \endlastfoot
%
  \everyrow{\tabucline[on 3 pt off 3pt]-}
  1 & \lipsum[2] \\
  2 & \lipsum[2] \\
  3 & \lipsum[2] \\
  4 & \lipsum[2] \\
  5 & \lipsum[2] \\
  6 & \lipsum[2] \\
  7 & \lipsum[2] \\
  8 & \lipsum[2]
  \everyrow{}\\*
  \bottomrule
  \caption{Table name}
\end{longtabu}

\end{document}

相关内容