如何处理分页符周围的多行,或者通过“检测”分页符并在之前自动分页来避免它?

如何处理分页符周围的多行,或者通过“检测”分页符并在之前自动分页来避免它?

请考虑以下 MWE 并minipage完全忽略(其唯一目的是利用垂直空间向下推顶部以longtblr进行演示):

% !TeX encoding = UTF-8
% !TEX TS-program = lualatex
\documentclass[paper=a4]{scrartcl}
\usepackage{tabularray}

\SetTblrInner[tblr,longtblr]{
    colspec = {|X[1,m]X[1,m]|},
    hlines,
    vlines,
}

\begin{document}
    \centering
    \begin{minipage}[c][16cm][c]{\linewidth}
    \centering
    minipage to take up plenty of vertical space

    (this is meant to push the longtblr way down on the A4 page)
    \end{minipage}

    \begin{longtblr}{cc} % using this to "break" at page breaks
        Table & header \\
        table & content \\
        table & content \\
        table & content \\
        \SetCell[r=2]{m} multi
         & row \\
         & row \#2 \\
        table & content \\
        table & content \\
        table & content \\
        table & content \\
    \end{longtblr}
\end{document}

我试图解决的问题发生在分页符之前,如果这个例子足够确定的话,恰好就是我开始多行的地方\SetCell[r=2]{m}

问题仅仅与longtblr文档中的有关。屏幕截图演示了该问题(标记的位置):

多行格式在分页符附近混乱

显然,我希望在分页符处longtblr表现出以下三种行为之一:

  1. 从多行退回并使用普通行
  2. 只需修复垂直对齐,但保留多行行为
  3. 以某种方式检测分页条件(显然longtblr已经有了一些东西)并提前或推迟分页(“拉伸”垂直空间

可能还有其他行为也能产生不错的结果,但这些是我能想到的。

问题

我怎样才能取得不错的成绩没有不得不手动干预——比如——计算“真实”行,然后插入一个手动的分页符?

注意:我知道强制或抑制分页符也会对布局产生不良影响。添加手动的 \pagebreak就在\SetCell实现 (3) 之前,但这不是自动化解决方案。同样,我可以只是该实例\SetCell使用不同的垂直对齐方式,让它像以前一样分页,但从而实现(2)。

答案1

您需要通过以下方式终止除由多行单元格跨越的最后一行之外的所有行\\*

% !TeX encoding = UTF-8
% !TEX TS-program = lualatex
\documentclass[paper=a4]{scrartcl}
\usepackage{tabularray}

\SetTblrInner[tblr,longtblr]{
    colspec = {|X[1,m]X[1,m]|},
    hlines,
    vlines,
}

\begin{document}
    \centering
\begin{minipage}[c][16cm][c]{\linewidth}
\centering
minipage to take up plenty of vertical space

(this is meant to push the longtblr way down on the A4 page)
\end{minipage}

    \begin{longtblr}{cc} % using this to "break" at page breaks
Table                   & Header    \\
table                   & content   \\
table                   & content   \\
table                   & content   \\
\SetCell[r=2]{m} multi  & row       \\*     % <-----
                        & row \#2   \\
table                   & content   \\
table                   & content   \\
table                   & content   \\
table                   & content   \\
    \end{longtblr}
\end{document}

在此处输入图片描述

笔记:
终止表格行以\\*防止在此行之后中断表格。这适用于任何类型的长表格(即,对于包也是如此longtblrtabularray,在包文档的文档中进行了描述longtable。它是 LaTeX 安装的一部分,也可以在加拿大运输安全局

相关内容