Como compor uma tabela longa com número diferente de linhas em algumas colunas?

Como compor uma tabela longa com número diferente de linhas em algumas colunas?

Mudei para o pacote tabularray há algum tempo e encontrei um "problema" recentemente com uma longa tabela abrangendo mais de duas páginas em um documento de classe de relatório com lualatex e pdflatex. A tabela possui um número diferente de linhas para as últimas colunas e o objetivo é remover as linhas de células indesejadas ao redor das células vazias na última linha.

No entanto, a primeira regra inferior (antes da quebra de página) não tem largura total conforme exigido no preâmbulo da tabela, mas apenas metade da largura como a última linha da tabela (ver imagem1produzido com o MWE e imagem2para a produção esperada).

MWE:

\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}

imagem 1: Saída do MWE

imagem 2: Resultado esperado do MWE

Gostaria de saber se a regra inferior antes de cada quebra de página é a "cópia" da regra inferior da tabela por padrão.

Também tentei usar apenas números de linha em vez de Y e Z, sem diferença na saída.

Talvez eu tenha perdido alguma coisa no manual? Ainda não encontrei um problema semelhante publicado online.

EDIT: tentei o que o @Celdor propôs. O problema de definir a última linha como pé é que ela se repete em todas as páginas e não imprime uma \hline completa.

A repetição da mesma linha no último MWE pode ser fonte de confusão, então atualizei o MWE com números de linhas, reduzi números de colunas e mostrei o uso de um rowfoot fantasma (colorido em rosa) sem borda3.

A saída desejada é: última linha antes da quebra de página com linha completa, última linha da tabela, meia linha3

\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}

saída MWE atualizada à esquerda, direita: saída esperada

Talvez não seja possível usar o pacote como está neste caso. Exceto evitar que a tabela se estenda por várias páginas, a redefinição do estilo da última linha com os comandos makeatletter/if/else/makeatother poderia ser algo a ser examinado?

Tal como:
> se pagebreak, então hline completo (ou estilo definido pelo usuário para esta linha)
> senão use o estilo de linha definido pelo usuário

Responder1

Eu gostaria de postar uma solução alternativa baseada em uma sugestão do mantenedor do pacote (graças ao lvjr!). Essencialmente, você pode criar um modelo personalizado que adiciona um \hrulerodapé à mesa em todas as páginas, exceto na última. O exemplo abaixo provavelmente poderia ser ajustado para que a regra não seja desenhada duas vezes para as duas colunas da esquerda:

\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}

Página 1 página 2

informação relacionada