如何排版某些列中有不同行数的长表格?

如何排版某些列中有不同行数的长表格?

不久前我切换到了 tabularray 包,最近在使用 lualatex 和 pdflatex 的报告类文档中,我遇到了一个“问题”,一个长表格跨越了两页。表格的最后几列的行数不同,目标是删除最后一行空单元格周围不需要的单元格线。

但是,第一个底部规则(分页符之前)不是表格序言中要求的全宽,而是像表格最后一行一样只有半宽(见图片1使用 MWE 和图像制作2以获得预期的输出)。

分数维:

\documentclass{report}
\usepackage{tabularray}

\begin{document}
    \begin{longtblr}
        [   caption = {Caption of the table presented just below},
        ]
        {   vlines={solid},
            vline{5-7} ={Z}{0pt},
            vline{4} = {1.5pt},
            hline{1-2}={1.5pt,solid},       
            hline{1-Y}={-}{solid},
            hline{Z}={1-3}{solid},
            rowhead=1,
            colspec={X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]},
        }
          Z & alpha & beta & Z & alpha & beta\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & & &
    \end{longtblr}  
\end{document}

图 1:MWE 的输出

图 2:MWE 的预期输出

我想知道每个分页符前的底部规则是否默认是表格底部规则的“副本”。

我也尝试过仅使用行号而不是 Y 和 Z,输出没有区别。

也许我错过了手册中的某些内容?我还没有在网上找到类似的问题。

编辑:我尝试了@Celdor 的建议。将最后一行定义为页脚的问题在于它会在每一页上重复,并且不会打印完整的 \hline。

最后一个 MWE 中同一行的重复可能会造成混淆,因此我使用行号更新了 MWE,减少了列号,并显示了使用没有边框的幻影行脚(粉红色)3

所需的输出是:分页符前的最后一行,全行,表格的最后一行,半行3

\documentclass{report}
\usepackage{tabularray}
\usepackage{xcolor}

\begin{document}
    \begin{longtblr}
        [   caption = {Caption of the table presented just below},
        ]{  rowfoot = 1,
            vlines={solid},
            vline{4-5} ={Y}{0pt},
            vline{-} ={Z}{0pt},
            vline{3} = {1-Y}{1.5pt},
            hline{1-2}={1.5pt,solid},       
            hline{1-Y}={-}{solid},
            hline{Z}={2-4}{0pt},
            rowhead=1,
            cell{Z}{-}={red!10},
            colspec={X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]},
        }
    
          Z & alpha  & Z  & beta\\
        1   &   alpha          & 1    &       beta\\
        2   &   alpha  & 2    &       beta\\
        3   &   alpha  & 3    &       beta\\
        4   &   alpha  & 4    &       beta\\
        5   &   alpha  & 5    &       beta\\
        6   &   alpha  & 6    &       beta\\
        7   &   alpha  & 7    &       beta\\
        8   &   alpha  & 8    &       beta\\
        9   &   alpha  & 9    &       beta\\
        10  &   alpha  & 10   &       beta\\
        11  &   alpha  & 11   &       beta\\
        12  &   alpha  & 12   &       beta\\
        13  &   alpha  & 13   &       beta\\
        14  &   alpha  & 14   &       beta\\
        15  &   alpha  & 15   &       beta\\
        16  &   alpha  & 16   &       beta\\
        17  &   alpha  & 17   &       beta\\
        18  &   alpha  & 18   &       beta\\
        19  &   alpha  & 19   &       beta\\
        20  &   alpha  & 20   &       beta\\
        21  &   alpha  & 21   &       beta\\
        22  &   alpha  & 22   &       beta\\
        23  &   alpha  & 23   &       beta\\
        24  &   alpha  & 24   &       beta\\
        25  &   alpha  & 25   &       beta\\
        26  &   alpha  & 26   &       beta\\
        27  &   alpha  & 27   &       beta\\
        28  &   alpha  & 28   &       beta\\
        29  &   alpha  & 29   &       beta\\
        30  &   alpha  & 30   &       beta\\
        31  &   alpha  & 31   &       beta\\
        32  &   alpha  & 32   &       beta\\
        33  &   alpha  & 33   &       beta\\
        34  &   alpha  & 34   &       beta\\
        35  &   alpha  & 35   &       beta\\
        36  &   alpha  & 36   &       beta\\
        37  &   alpha  & 37   &       beta\\
        38  &   alpha  & 38   &       beta\\
        39  &   alpha  & 39   &       beta\\
        40  &   alpha  & 40   &       beta\\
        41  &   alpha  & 41   &       beta\\
        42  &   alpha  & 42   &       beta\\
        43  &   gamma   &\\
        & & & 
    \end{longtblr}
\end{document}

左侧更新了 MWE 输出,右侧:预期输出

也许在这种情况下无法按原样使用该包。除了避免表格跨越多页之外,使用 makeatletter/if/else/makeatother 命令重新定义最后一行的样式是否值得研究?

例如:
> 如果是分页符,则使用完整的水平线(或用户为此行定义的样式)
> 否则使用用户定义的线条样式

答案1

我想根据软件包维护者的建议发布一个解决方法(感谢 lvjr!)。本质上,您可以创建一个自定义模板,\hrule在除最后一页之外的每一页上添加表格脚。下面的示例可能需要进行调整,以便不会对左边两列绘制两次规则:

\documentclass{report}
\usepackage{tabularray}

\DefTblrTemplate{firstfoot,middlefoot}{mytemplate}{
  \vskip -0.4pt 
  \hrule height 0.4pt width \tablewidth
}

\DefTblrTemplate{lastfoot}{mytemplate}{
}

\NewTblrTheme{mytheme}{
  \SetTblrTemplate{foot}{mytemplate}
}

\begin{document}
    \begin{longtblr}
        [   caption = {Caption of the table presented just below},
            theme=mytheme,
        ]
        {   vlines={solid},
            vline{5-7} ={Z}{0pt},
            vline{4} = {1.5pt},
            hline{1-2}={1.5pt,solid},       
            hline{1-Y}={-}{solid},
            hline{Z}={1-3}{solid},
            rowhead=1,
            colspec={X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]X[halign=c, valign=m]},
        }
          Z & alpha & beta & Z & alpha & beta\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & 6 &   rho & omega\\
        5   &   alpha   &   mu  & & &
    \end{longtblr}  
\end{document}

第1页 第2页

相关内容