[NTG-context] issue splitting tables and horizontal mode

Wolfgang Schuster wolfgang.schuster.lists at gmail.com
Sun Oct 20 11:49:15 CEST 2019


Pablo Rodriguez schrieb am 18.10.2019 um 16:23:
> Dear list,
>
> I have another issue related to extreme tables.
>
>      \setupxtable[split=yes]
>      \starttext
>      \startmakeup[standard]
>          \dontleavehmode
>          \startxtable[align={middle,lohi},columndistance=0em]
>              \startxrow
>                  \startxcell
>                      \dontleavehmode
>                      \externalfigure[cow.pdf]
>                          [scale=500]
>                  \stopxcell
>                  \startxcell
>                      \dontleavehmode
>                      \externalfigure[cow.pdf]
>                          [scale=500]
>                  \stopxcell
>              \stopxrow
>          \stopxtable
>      \stopmakeup
>      \stoptext
>
> When splitting extreme tables, I cannot use \dontleavehmode.
1. What is the purpose of \dontleavehmode in your example?

2. Why do you try to split a table in a makup environment (which will 
never work)?
> Since this worked before, am I missing something or is this a bug?
It isn't a bug but a side effect of the way how split=yes works.

The normal splitters uses a simple placement method where each table row 
is placed below each other. To prevent unwanted white space between the 
lines \nointerlineskip is used but the command works only a vertical 
mode. With \dontleavehmode like in your example you force horizontal 
mode for the table which results in the error message.

You can reproduce the error with the following minimal example:

\starttext

\dontleavehmode
\vbox{}
\nointerlineskip
\vbox{}

\stoptext

The reason why this doens't happen when splitting is disabled or when 
the header or footer lines are repeated is that ConTeXt puts the 
collected lines for each table in a \vbox. When you flush the lines in 
the \vbox the are placed in vertical modes and your \dontleavehmode is 
only applied to the outer \vbox while the lines itself are placed in 
vertical mode.

\starttext

\dontleavehmode
\vbox
   {\vbox{}
    \nointerlineskip
    \vbox{}}

\stoptext

Wolfgang



More information about the ntg-context mailing list