いくつかの列の行数が異なる長い表をタイプセットするにはどうすればいいですか?

いくつかの列の行数が異なる長い表をタイプセットするにはどうすればいいですか?

しばらく前に tabularray パッケージに切り替えましたが、最近、lualatex と pdflatex を使用したレポート クラス ドキュメントで 2 ページにまたがる長いテーブルに関する「問題」に遭遇しました。テーブルの最後の列の行数が異なり、最終行の空のセルの周囲の不要なセル行を削除することが目標です。

ただし、最初の下罫線(改ページ前)は、表のプリアンブルで要求されている全幅ではなく、表の最後の行のように半幅のみです(画像を参照)。1MWEと画像で制作2期待される出力のため)。

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}

画像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 コマンドを使用して最後の行のスタイルを再定義することを検討してみてはいかがでしょうか。

例えば、次のようになります。
> 改ページの場合は、完全な hline(またはこの行に対してユーザーが定義したスタイル)
を使用します。 > それ以外の場合は、ユーザーが定義した線スタイルを使用します。

答え1

パッケージ管理者の提案に基づいて回避策を投稿したいと思います (lvjr さん、ありがとうございます!)。基本的には、\hrule最後のページを除くすべてのページの表の脚に を追加するカスタム テンプレートを作成できます。以下の例は、おそらく、左の 2 つの列に罫線が 2 回描画されないように調整できます。

\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ページ

関連情報