[dev-context] Keep extreme tables on the same page as previous content

Wolfgang Schuster wolfgang.schuster.lists at gmail.com
Sat Apr 4 10:42:00 CEST 2020


Hi,

when you use extreme tables without a float environment but repeat the 
header the table always starts on a new page.

%%%% begin example
\starttext

\samplefile{weisman}

\blank

\startxtable[header=repeat,split=repeat]
     \startxtablehead
         \startxrow \startxcell Table head \stopxcell \stopxrow
     \stopxtablehead
     \startxtablebody
         \dorecurse{100}{\startxrow \startxcell Table body \stopxcell 
\stopxrow}
     \stopxtablebody
\stopxtable

\stoptext
%%%% end example

The reason for this is the height set for the part of each page, on the 
first page ConTeXt uses a box with the height of \pagegoal forces a page 
break because the content doesn't fit.

\setvalue{\??xtableflushsplit\v!repeat}%
   {\doloop
      {\clf_x_table_flush
         method {\v!split}%
         height \ifdim\pagegoal=\maxdimen\textheight\else\pagegoal\fi
       \relax
       \ifcase\c_tabl_x_state
         \exitloop
       \else
         \page
       \fi}}

While determining the available space is easy we need a method to ensure 
the table stays on the page when the user adds a vertical skip (e.g. 
\blank[...]) before the table because this can lead to another page break.

Wolfgang



More information about the dev-context mailing list