summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/tabl-frm.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/tabl-frm.mkiv')
-rw-r--r--tex/context/base/mkiv/tabl-frm.mkiv115
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