diff options
Diffstat (limited to 'tex/context/base/mkiv/tabl-frm.mkiv')
-rw-r--r-- | tex/context/base/mkiv/tabl-frm.mkiv | 115 |
1 files changed, 111 insertions, 4 deletions
diff --git a/tex/context/base/mkiv/tabl-frm.mkiv b/tex/context/base/mkiv/tabl-frm.mkiv index 639d6f06d..c0f4b7cd1 100644 --- a/tex/context/base/mkiv/tabl-frm.mkiv +++ b/tex/context/base/mkiv/tabl-frm.mkiv @@ -134,6 +134,56 @@ {\framedparameter\c!after \endgroup} +% \unexpanded\def\startframedrow +% {\advance\c_tabl_framed_r\plusone +% \c_tabl_framed_c\zerocount +% \d_tabl_framed_h\zeropoint +% \bgroup +% \edef\currentframed{\number\c_tabl_framed_r}% +% \edef\currentframed +% {\??framedtablerow\currentframedtable +% \ifcsname\??framedtablerow\currentframedtable:\currentframed\endcsname +% :\currentframed +% \else\ifcsname\??framedtablerow\currentframedtable:\v!each\endcsname +% :\v!each +% \fi\fi}% +% \dosingleempty\pack_framed_start_framed_nop_indeed} +% +% \unexpanded\def\stopframedrow +% {\dofastloopcs\c_tabl_framed_c\tabl_framed_flush_row +% \stopframed +% \nointerlineskip +% \vskip\zeropoint\relax +% \framedparameter\c!inbetween} +% +% \unexpanded\def\tabl_framed_flush_row +% {\vpack to \d_tabl_framed_h{\flushbox\??framedtable{\number\fastloopindex}\vfill}% +% \ifdim\d_tabl_framed_d=\zeropoint\else\kern\d_tabl_framed_d\fi} +% +% \unexpanded\def\startframedcell +% {\advance\c_tabl_framed_c\plusone +% \setbox\b_tabl_framed\hpack\bgroup +% %\bgroup +% \edef\currentframed{\number\c_tabl_framed_c}% +% \edef\currentframed +% {\??framedtablecolumn\currentframedtable +% \ifcsname\??framedtablecolumn\currentframedtable:\currentframed\endcsname +% :\currentframed +% \else\ifcsname\??framedtablecolumn\currentframedtable:\v!each\endcsname +% :\v!each +% \fi\fi}% +% \dosingleempty\pack_framed_start_framed_nop_indeed} +% +% \unexpanded\def\stopframedcell +% {\stopframed +% %\egroup +% \ifdim\ht\b_tabl_framed>\d_tabl_framed_h +% \d_tabl_framed_h\ht\b_tabl_framed +% \fi +% \savebox\??framedtable{\number\c_tabl_framed_c}{\box\b_tabl_framed}} + +% a two pass variant that deals with the height .. so no catcode changes here + \unexpanded\def\startframedrow {\advance\c_tabl_framed_r\plusone \c_tabl_framed_c\zerocount @@ -160,6 +210,52 @@ {\vpack to \d_tabl_framed_h{\flushbox\??framedtable{\number\fastloopindex}\vfill}% \ifdim\d_tabl_framed_d=\zeropoint\else\kern\d_tabl_framed_d\fi} +\newcount\c_tabl_framed_pass + +\let\stopframedrow\relax + +\unexpanded\def\startframedrow#1\stopframedrow + {\advance\c_tabl_framed_r\plusone + \startframedrow_one#1\stopframedrow_one + \startframedrow_two#1\stopframedrow_two} + +\def\startframedrow_one + {\bgroup + \c_tabl_framed_pass\plusone + \c_tabl_framed_c\zerocount + \d_tabl_framed_h\zeropoint + \settrialtypesetting + \gobblesingleempty} + +\unexpanded\def\stopframedrow_one + {\normalexpanded{\egroup\d_tabl_framed_h\the\d_tabl_framed_h\relax}} + +\def\startframedrow_two + {\bgroup + \c_tabl_framed_c\zerocount + \c_tabl_framed_pass\plustwo + \edef\currentframed{\number\c_tabl_framed_r}% + \edef\currentframed + {\??framedtablerow\currentframedtable + \ifcsname\??framedtablerow\currentframedtable:\currentframed\endcsname + :\currentframed + \else\ifcsname\??framedtablerow\currentframedtable:\v!each\endcsname + :\v!each + \fi\fi}% + \dosingleempty\pack_framed_start_framed_nop_indeed} + +\unexpanded\def\stopframedrow_two + {\dofastloopcs\c_tabl_framed_c\tabl_framed_flush_row + \stopframed + \nointerlineskip + \vskip\zeropoint\relax + \framedparameter\c!inbetween} + +\unexpanded\def\tabl_framed_flush_row_two + {\vpack to \d_tabl_framed_h{\flushbox\??framedtable{\number\fastloopindex}\vfill}% + \ifdim\d_tabl_framed_d=\zeropoint\else\kern\d_tabl_framed_d\fi} + + \unexpanded\def\startframedcell {\advance\c_tabl_framed_c\plusone \setbox\b_tabl_framed\hpack\bgroup @@ -172,15 +268,26 @@ \else\ifcsname\??framedtablecolumn\currentframedtable:\v!each\endcsname :\v!each \fi\fi}% + \ifcase\c_tabl_framed_pass + \or + \letframedparameter\c!background\empty + \letframedparameter\c!frame\v!off + \or + \letframedparameter\c!height\d_tabl_framed_h + \fi \dosingleempty\pack_framed_start_framed_nop_indeed} \unexpanded\def\stopframedcell {\stopframed %\egroup - \ifdim\ht\b_tabl_framed>\d_tabl_framed_h - \d_tabl_framed_h\ht\b_tabl_framed - \fi - \savebox\??framedtable{\number\c_tabl_framed_c}{\box\b_tabl_framed}} + \ifcase\c_tabl_framed_pass + \or + \ifdim\ht\b_tabl_framed>\d_tabl_framed_h + \d_tabl_framed_h\ht\b_tabl_framed + \fi + \else + \savebox\??framedtable{\number\c_tabl_framed_c}{\box\b_tabl_framed}% + \fi} \protect \endinput |