
Я перешел на пакет 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, но без какой-либо разницы в результатах.
Может быть, я что-то пропустил в руководстве? Я пока не нашел похожей проблемы в сети.
EDIT: Я попробовал то, что предложил @Celdor. Проблема с определением последней строки как фута заключается в том, что она повторяется на каждой странице и не печатает полную \hline.
Повторение одной и той же строки в последнем MWE может стать источником путаницы, поэтому я обновил MWE, добавив номера строк, сократив номера столбцов и показав использование фантомной строки-стопы (окрашенной в розовый цвет) без рамки.3.
Желаемый вывод: последняя строка перед разрывом страницы с полной строкой hline, последняя строка таблицы, половина строки hline3
\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}