我尝试将 halign 扩展到多个页面。我\filbreak
在每一行后都使用。
\tracingonline=1
\advance\vsize by -15cm
\def\tablerule{\noalign{\hrule height .3mm\filbreak}}
\newcount\posno\posno=1
\def\pos{\hskip3pt\number\posno\global\advance\posno by 1}
\tabskip=0pt%
\halign to 400pt{\vrule width 0pt height 12pt depth 6pt#\tabskip=1em&#\tabskip=1em&#\tabskip=1em plus 1fil&#\tabskip=1em\cr
\tablerule%
\hskip3pt%
{\bf Pos.} & {\bf Anz.} & {\bf Beschreibung} & {\bf Seriennummer}\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
\pos & 1 St. & Abcdefg & 123/12/12-1234567\cr\tablerule
}
\bye
问题是:当发生分页符时,\hrule
新页面的顶部缺少内容。
是否可以检查是否\filbreak
已创建分页符以便\hrule
为新页面添加附加分页符?
答案1
你不能探测这是因为 TeX 在进行分页时早已完成了宏的扩展。但是您可以诱使它在那里为您插入规则。
如果您将您的更改\tablerule
为:
\def\tablerule{\noalign{%
\hrule height .3mm
\filbreak\vskip-.3mm
\hrule height .3mm}}
然后每条规则都会加倍,但由于负数,\vskip
它们会重叠,因此只有一个可见。然而,在分页符处,由于 ,规则将跨页面分开\filbreak
,并且\vskip
将在下一页的顶部被丢弃,这样您就会得到所需的两条规则。
longtable
这是当它找到时所做的事情(一个过于简单的版本)\hline
,除了它longtable
概括了不同规则宽度和可能的双倍的情况\hline
。