summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/pack-com.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/pack-com.mkxl')
-rw-r--r--tex/context/base/mkxl/pack-com.mkxl117
1 files changed, 110 insertions, 7 deletions
diff --git a/tex/context/base/mkxl/pack-com.mkxl b/tex/context/base/mkxl/pack-com.mkxl
index ebae2fd4a..2b751e08b 100644
--- a/tex/context/base/mkxl/pack-com.mkxl
+++ b/tex/context/base/mkxl/pack-com.mkxl
@@ -232,12 +232,97 @@
\let\p_nx_ny\empty
-\permanent\protected\def\stopcombination
- {\bgroup\normalexpanded{\egroup{}\ntimes{{}{}}\c_pack_combinations_y}% brr
- \dostoptagged
- \egroup
- \pack_combinations_pop
- \egroup}
+% \permanent\tolerant\protected\def\startcombination[#1]#*[#2]% can be simplified
+% {\bgroup % so we can grab a group
+% \pack_combinations_push
+% \edef\currentcombination{#1}%
+% \edef\p_nx_ny{#2}%
+% %
+% \ifempty\p_nx_ny
+% \ifcondition\validassignment{#1}%
+% \let\currentcombination\empty
+% \setupcurrentcombination[#1]%
+% \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
+% \else
+% \doifelseinstring{*}\currentcombination
+% {\edef\p_nx_ny{\currentcombination*\plusone*}%
+% \let\currentcombination\empty}
+% {\doifelsenumber\currentcombination
+% {\edef\p_nx_ny{\currentcombination*\plusone*}%
+% \let\currentcombination\empty}
+% {\edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}}}%
+% \fi
+% \else
+% \ifcondition\validassignment{#2}%
+% \setupcurrentcombination[#2]%
+% \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
+% \else
+% \edef\p_nx_ny{\p_nx_ny*\plusone*}%
+% \fi
+% \fi
+% %
+% % test first:
+% %
+% % \ifempty\p_nx_ny
+% % \ifhastok={#1}%
+% % \let\currentcombination\empty
+% % \setupcurrentcombination[#1]%
+% % \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
+% % \orelse\ifhastok*{\currentcombination}%
+% % \edef\p_nx_ny{\currentcombination*\plusone*}%
+% % \let\currentcombination\empty
+% % \orelse\ifchknum\currentcombination\or
+% % \edef\p_nx_ny{\currentcombination*\plusone*}%
+% % \let\currentcombination\empty
+% % \else
+% % \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
+% % \fi
+% % \orelse\ifhastok={#2}%
+% % \setupcurrentcombination[#2]%
+% % \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
+% % \else
+% % \edef\p_nx_ny{\p_nx_ny*\plusone*}%
+% % \fi
+% %
+% \forgetall
+% %
+% \the\everycombination
+% %
+% \enforced\let\startcontent\pack_common_content_start
+% \enforced\let\stopcontent \pack_common_content_stop
+% \enforced\let\startcaption\pack_common_caption_start
+% \enforced\let\stopcaption \pack_common_caption_stop
+% %
+% \edef\p_height {\combinationparameter\c!height}%
+% \edef\p_width {\combinationparameter\c!width}%
+% \edef\p_location{\combinationparameter\c!location}%
+% \edef\p_distance{\combinationparameter\c!distance}%
+% %
+% \pack_combinations_location_reset
+% \rawprocesscommacommand[\p_location]\pack_combinations_location_step
+% %
+% \dostarttaggedchained\t!combination\currentcombination\??combination
+% \vbox \ifx\p_height\v!fit\else to \p_height \fi \bgroup
+% \enforced\let\combination\empty % permits \combination{}{} handy for cld
+% \normalexpanded{\pack_combinations_start_indeed[\p_nx_ny]}}
+%
+% \permanent\protected\def\stopcombination
+% {\bgroup\normalexpanded{\egroup{}\ntimes{{}{}}\c_pack_combinations_y}% brr
+% \dostoptagged
+% \egroup
+% \pack_combinations_pop
+% \egroup}
+
+\installcorenamespace{combinationmethod}
+
+% \defcsname\??combinationmethod:\v!start\endcsname
+% {}
+%
+% \defcsname\??combinationmethod\endcsname
+% {\vbox}
+%
+% \defcsname\??combinationmethod:\v!stop\endcsname
+% {}
\permanent\tolerant\protected\def\startcombination[#1]#*[#2]% can be simplified
{\bgroup % so we can grab a group
@@ -267,6 +352,7 @@
\edef\p_nx_ny{\p_nx_ny*\plusone*}%
\fi
\fi
+ \begincsname\??combinationmethod\combinationparameter\c!method:\v!start\endcsname
%
% test first:
%
@@ -309,12 +395,25 @@
\rawprocesscommacommand[\p_location]\pack_combinations_location_step
%
\dostarttaggedchained\t!combination\currentcombination\??combination
- \vbox \ifx\p_height\v!fit\else to \p_height \fi \bgroup
+% \vbox \ifx\p_height\v!fit\else to \p_height \fi \bgroup
+ \ifcsname\??combinationmethod\combinationparameter\c!method\endcsname
+ \lastnamedcs\else\vbox
+ \fi\ifx\p_height\v!fit\else to \p_height \fi \bgroup
\enforced\let\combination\empty % permits \combination{}{} handy for cld
\normalexpanded{\pack_combinations_start_indeed[\p_nx_ny]}}
+\permanent\protected\def\stopcombination
+ {\bgroup\normalexpanded{\egroup{}\ntimes{{}{}}\c_pack_combinations_y}% brr
+ \dostoptagged
+ \egroup
+ \begincsname\??combinationmethod\combinationparameter\c!method:\v!stop\endcsname
+ \pack_combinations_pop
+ \egroup}
+
\let\pack_combinations_check_x_y\relax
+\aliased\let\combinationwidth\!!zeropoint
+
\protected\def\pack_combinations_start_indeed[#1*#2*#3]%
{\global\c_pack_combinations_x#1\relax
\global\c_pack_combinations_y#2\relax
@@ -326,6 +425,10 @@
\global\c_pack_combinations_max\c_pack_combinations_x
\multiply\c_pack_combinations_y\c_pack_combinations_x
\tabskip\zeropoint
+ \enforced\permanent\protected\edef\combinationwidth % \immutable
+ {\the\dimexpr
+ (\hsize-\numexpr\c_pack_combinations_x-\plusone\relax\dimexpr\combinationparameter\c!distance\relax)/\c_pack_combinations_x
+ \relax}%
\halign \ifx\p_width\v!fit\else to \p_width \fi \bgroup % repetitive preamble
% \halign noskips \ifx\p_width\v!fit\else to \p_width \fi \bgroup % repetitive preamble
\aligntab