表格和文本块之间的不间断垂直空间

表格和文本块之间的不间断垂直空间

我有一个非常具体的要求,就是在最后一页的底部放置一个带框的文本块永远不会单独出现在单独的页面上。目前我使用\vspace*{\fill}一个单元格表格。需求的第一部分已经很好地满足,但第二部分还没有满足(否则我就不会问了)。目前我面临的是两个tabularray表格之间的问题,但一个也适用于段落的通用解决方案会很好。

TL;DR:我想我需要的是垂直方向上等同于不间断空格的东西。

就上下文而言,我使用 xetex 和 MiKTeX 分布。

这个简化的再现器显示第二个表格单独跳到下一页,而不是带走表格的最后三行:

\documentclass[10pt]{article}

\usepackage{tabularray}

\begin{document}
\begin{longtblr}{
    column{1} = {l},
}
odio\\
ut\\
enim\\
blandit\\
volutpat\\
maecenas\\
volutpat\\
blandit\\
aliquam\\
etiam\\
erat\\
velit\\
scelerisque\\
in\\
dictum\\
non\\
consectetur\\
a\\
erat\\
nam\\
at\\
lectus\\
urna\\
duis\\
convallis\\
convallis\\
tellus\\
id\\
interdum\\*
velit\\*
laoreet\\*
\end{longtblr}
\vspace*{\fill}
\begin{longtblr}{
    column{1} = {l}
}
Lorem ipsum \\
\end{longtblr}
\end{document}

答案1

作为一种可能的解决方案,以下示例将最后三行拆分为新表并检查是否需要新页:

\documentclass[12pt]{article}
\usepackage[b6paper,margin=1.5cm]{geometry}

\usepackage{tabularray}

\SetTblrOuter[longtblr]{footsep=0pt}
\SetTblrOuter[longtblr]{postsep=0pt}

\newsavebox{\mybox}

\newcommand\MyLastRows[2]{%
  \savebox\mybox{\vbox{#1\par#2}}%
  \ifdim\dimexpr\ht\mybox+\dp\mybox\relax>\dimexpr\pagegoal-\pagetotal\relax
    \newpage
  \else
    \vspace{-0.4pt}%
  \fi
  \noindent#1\par\vfill\noindent#2%
}

\begin{document}

\begin{longtblr}{colspec={X},hlines}
  odio\\
  ut\\
  enim\\
  blandit\\
  volutpat\\
  maecenas\\
  volutpat\\
  blandit\\
  aliquam\\
  etiam\\
  erat\\
  velit\\
  scelerisque\\
  in\\
  dictum\\
  non\\
  consectetur\\
  a\\
%  erat\\
%  nam\\
%  at\\
%  lectus\\
%  urna\\
%  duis\\
%  convallis\\
%  convallis\\
%  tellus\\
%  id\\
\end{longtblr}

\MyLastRows{%
  \begin{tblr}{colspec={X},hlines}
    interdum\\
    velit\\
    laoreet\\
  \end{tblr}
}{%
  \begin{tblr}{colspec={X},hlines}
    Lorem ipsum\\
  \end{tblr}
}
 
\end{document}

在此处输入图片描述

相关内容