![如何排版某些列中有不同行数的长表格?](https://linux22.com/image/455961/%E5%A6%82%E4%BD%95%E6%8E%92%E7%89%88%E6%9F%90%E4%BA%9B%E5%88%97%E4%B8%AD%E6%9C%89%E4%B8%8D%E5%90%8C%E8%A1%8C%E6%95%B0%E7%9A%84%E9%95%BF%E8%A1%A8%E6%A0%BC%EF%BC%9F.png)
不久前我切换到了 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}
我想知道每个分页符前的底部规则是否默认是表格底部规则的“副本”。
我也尝试过仅使用行号而不是 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}
也许在这种情况下无法按原样使用该包。除了避免表格跨越多页之外,使用 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}