summaryrefslogtreecommitdiff
path: root/tex/context/base/tabl-ntb.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/tabl-ntb.mkiv')
-rw-r--r--tex/context/base/tabl-ntb.mkiv270
1 files changed, 131 insertions, 139 deletions
diff --git a/tex/context/base/tabl-ntb.mkiv b/tex/context/base/tabl-ntb.mkiv
index 86b1baec9..52cc09096 100644
--- a/tex/context/base/tabl-ntb.mkiv
+++ b/tex/context/base/tabl-ntb.mkiv
@@ -122,10 +122,11 @@
\newcount\c_tabl_ntb_current_row_four
\newcount\c_tabl_ntb_current_col_four
-\newcount\c_tabl_maximum_row
-\newcount\c_tabl_maximum_col
-\newcount\c_tabl_maximum_row_span
-\newcount\c_tabl_maximum_col_span
+\newcount\c_tabl_ntb_running_col
+\newcount\c_tabl_ntb_maximum_row
+\newcount\c_tabl_ntb_maximum_col
+\newcount\c_tabl_ntb_maximum_row_span
+\newcount\c_tabl_ntb_maximum_col_span
\newtoks\t_tabl_ntb
\newtoks\t_tabl_ntb_row
@@ -319,32 +320,6 @@
\doubleexpandafter\tabl_ntb_setup_one
\fi\fi}
-% \def\tabl_ntb_setup_three[#1][#2][#3]%
-% {\processaction
-% [#1]
-% [ \v!row=>{\tabl_ntb_setup_xy[\c!y][#2][#3]},%
-% \v!column=>{\tabl_ntb_setup_xy[\c!x][#2][#3]},%
-% r=>{\tabl_ntb_setup_xy[\c!y][#2][#3]},%
-% c=>{\tabl_ntb_setup_xy[\c!x][#2][#3]},%
-% y=>{\tabl_ntb_setup_xy[\c!y][#2][#3]},%
-% x=>{\tabl_ntb_setup_xy[\c!x][#2][#3]},%
-% \v!start=>{\tabl_ntb_setup_xy[#1][#2][#3]},%
-% \v!header=>{\tabl_ntb_setup_xy[#1][#2][#3]},%
-% \s!unknown=>{\tabl_ntb_setup_un[#1][#2][#3]}]}
-
-% \def\tabl_ntb_setup_two[#1][#2][#3]%
-% {\processaction
-% [#1]
-% [ \v!row=>{\tabl_ntb_setup_xy[\c!y][\v!each][#2]},%
-% \v!column=>{\tabl_ntb_setup_xy[\c!x][\v!each][#2]},%
-% r=>{\tabl_ntb_setup_xy[\c!y][\v!each][#2]},%
-% c=>{\tabl_ntb_setup_xy[\c!x][\v!each][#2]},%
-% y=>{\tabl_ntb_setup_xy[\c!y][\v!each][#2]},%
-% x=>{\tabl_ntb_setup_xy[\c!x][\v!each][#2]},%
-% \v!start=>{\tabl_ntb_setup_xy[#1][\v!each][#2]},%
-% \v!header=>{\tabl_ntb_setup_xy[#1][\v!each][#2]},%
-% \s!unknown=>{\tabl_ntb_setup_xy[\c!x][#1][#2]}]}
-
\def\tabl_ntb_setup_one[#1][#2][#3]%
{\setupcurrentnaturaltablelocal[#1]}
@@ -474,8 +449,8 @@
{\tabl_ntb_setup_section % already forgotten
\edef\m_tabl_ntb_positive_row{\number#1}%
\edef\m_tabl_ntb_positive_col{\number#2}%
- \edef\m_tabl_ntb_negative_row{\the\numexpr-\c_tabl_maximum_row+#1+\minusone\relax}%
- \edef\m_tabl_ntb_negative_col{\the\numexpr-\c_tabl_maximum_col+#2+\minusone\relax}%
+ \edef\m_tabl_ntb_negative_row{\the\numexpr-\c_tabl_ntb_maximum_row+#1+\minusone\relax}%
+ \edef\m_tabl_ntb_negative_col{\the\numexpr-\c_tabl_ntb_maximum_col+#2+\minusone\relax}%
% saves tokens (no speed gain)
\edef\m_tabl_ntb_prefix{\??naturaltableset\m_tabl_tbl_level:}%
% each each
@@ -504,40 +479,40 @@
\csname\m_tabl_ntb_prefix\c!x\v!first\endcsname
\ifcsname\m_tabl_ntb_prefix\c!x\v!first\c!y\m_tabl_ntb_positive_row\endcsname\csname\m_tabl_ntb_prefix\c!x\v!first\c!y\m_tabl_ntb_positive_row\endcsname\fi
\fi
- \ifnum\m_tabl_ntb_positive_row=\c_tabl_maximum_row\relax
+ \ifnum\m_tabl_ntb_positive_row=\c_tabl_ntb_maximum_row\relax
\csname\m_tabl_ntb_prefix\c!y\v!last\endcsname
\ifcsname\m_tabl_ntb_prefix\c!x\m_tabl_ntb_positive_col\c!y\v!last\endcsname\csname\m_tabl_ntb_prefix\c!x\m_tabl_ntb_positive_col\c!y\v!last\endcsname\fi
\fi
- \ifnum\m_tabl_ntb_positive_col=\c_tabl_maximum_col\relax
+ \ifnum\m_tabl_ntb_positive_col=\c_tabl_ntb_maximum_col\relax
\csname\m_tabl_ntb_prefix\c!x\v!last\endcsname
\ifcsname\m_tabl_ntb_prefix\c!x\v!last\c!y\m_tabl_ntb_positive_row\endcsname\csname\m_tabl_ntb_prefix\c!x\v!last\c!y\m_tabl_ntb_positive_row\endcsname\fi
\fi
- \ifnum\m_tabl_ntb_positive_row=\c_tabl_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\c_tabl_maximum_col\relax
+ \ifnum\m_tabl_ntb_positive_row=\c_tabl_ntb_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\c_tabl_ntb_maximum_col\relax
\csname\m_tabl_ntb_prefix\c!x\v!last\c!y\v!last\endcsname
\fi\fi
\ifnum\m_tabl_ntb_positive_row=\plusone \ifnum\m_tabl_ntb_positive_col=\plusone
\csname\m_tabl_ntb_prefix\c!x\v!first\c!y\v!first\endcsname
\fi\fi
- \ifnum\m_tabl_ntb_positive_row=\plusone \ifnum\m_tabl_ntb_positive_col=\c_tabl_maximum_col\relax
+ \ifnum\m_tabl_ntb_positive_row=\plusone \ifnum\m_tabl_ntb_positive_col=\c_tabl_ntb_maximum_col\relax
\csname\m_tabl_ntb_prefix\c!x\v!last\c!y\v!first\endcsname
\fi\fi
- \ifnum\m_tabl_ntb_positive_row=\c_tabl_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\plusone
+ \ifnum\m_tabl_ntb_positive_row=\c_tabl_ntb_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\plusone
\csname\m_tabl_ntb_prefix\c!x\v!first\c!y\v!last\endcsname
\fi\fi
% special case: two rows and last row : two&first and two&last (round corners)
- \ifnum\c_tabl_maximum_row=\plustwo\relax
- \ifnum\m_tabl_ntb_positive_row=\c_tabl_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\plusone
+ \ifnum\c_tabl_ntb_maximum_row=\plustwo\relax
+ \ifnum\m_tabl_ntb_positive_row=\c_tabl_ntb_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\plusone
\csname\m_tabl_ntb_prefix\c!x\v!first\c!y\v!two\endcsname
\fi\fi
- \ifnum\m_tabl_ntb_positive_row=\c_tabl_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\c_tabl_maximum_col\relax
+ \ifnum\m_tabl_ntb_positive_row=\c_tabl_ntb_maximum_row\relax \ifnum\m_tabl_ntb_positive_col=\c_tabl_ntb_maximum_col\relax
\csname\m_tabl_ntb_prefix\c!x\v!last\c!y\v!two\endcsname
\fi\fi
\fi
- \ifnum\tabl_ntb_get_col\m_tabl_ntb_positive_row\m_tabl_ntb_positive_col=\c_tabl_maximum_col\relax % top span over whole width
+ \ifnum\tabl_ntb_get_col\m_tabl_ntb_positive_row\m_tabl_ntb_positive_col=\c_tabl_ntb_maximum_col\relax % top span over whole width
\ifnum\m_tabl_ntb_positive_row=\plusone
\csname\m_tabl_ntb_prefix\c!x\v!one\c!y\v!first\endcsname
\fi
- \ifnum\m_tabl_ntb_positive_row=\c_tabl_maximum_row\relax
+ \ifnum\m_tabl_ntb_positive_row=\c_tabl_ntb_maximum_row\relax
\csname\m_tabl_ntb_prefix\c!x\v!one\c!y\v!last\endcsname
\fi
\fi
@@ -579,8 +554,8 @@
% \eTABLE
\unexpanded\def\tabl_ntb_tr
- {\c_tabl_ntb_current_col\zerocount
- \advance\c_tabl_maximum_row\plusone
+ {\c_tabl_ntb_running_col\zerocount
+ \advance\c_tabl_ntb_maximum_row\plusone
\iffirstargument
\expandafter\tabl_ntb_tr_yes
\else
@@ -588,13 +563,11 @@
\fi}
\def\tabl_ntb_tr_yes[#1]%
- {\setvalue{\??naturaltableset\m_tabl_tbl_level:\c!y++\the\c_tabl_maximum_row}{\setupcurrentnaturaltablelocal[#1]}}
+ {\setvalue{\??naturaltableset\m_tabl_tbl_level:\c!y++\the\c_tabl_ntb_maximum_row}{\setupcurrentnaturaltablelocal[#1]}}
\def\m_tabl_ntb_default_nr{\naturaltableparameter\c!nr}
\def\m_tabl_ntb_default_nc{\naturaltableparameter\c!nc}
-% \naturaltableparameter\c!action => \empty (brr, only needed for nesting)
-
\unexpanded\def\tabl_ntb_td
{\iffirstargument
\expandafter\tabl_ntb_td_yes
@@ -607,30 +580,30 @@
\letnaturaltableparameter\c!nx \m_tabl_ntb_default_nc
\letnaturaltableparameter\c!nc \plusone
\letnaturaltableparameter\c!nr \plusone
- \letnaturaltableparameter\c!n \c_tabl_ntb_current_col
+ \letnaturaltableparameter\c!n \c_tabl_ntb_running_col
\letnaturaltableparameter\c!m \empty
- \letnaturaltableparameter\c!action\empty
+ \letnaturaltableparameter\c!action\empty % not that important
\setupcurrentnaturaltable[#1]%
%
\c_tabl_ntb_nx\naturaltableparameter\c!nx\relax
\c_tabl_ntb_ny\naturaltableparameter\c!ny\relax
- % goto first cell % NEW, n/m=cellnumber
+ % goto first cell n/m=cellnumber
\edef\m_tabl_ntb_n{\naturaltableparameter\c!n}%
\edef\m_tabl_ntb_m{\naturaltableparameter\c!m}%
%
\ifx\m_tabl_ntb_n\empty
\global\advance\c_tabl_ntb_spn\c_tabl_ntb_nx\relax
- \else\ifnum\m_tabl_ntb_n=\c_tabl_ntb_current_col\else
+ \else\ifnum\m_tabl_ntb_n=\c_tabl_ntb_running_col\else
\tabl_ntb_td_pass_n{#1}%
\fi\fi
\ifx\m_tabl_ntb_m\empty \else
- \ifnum\m_tabl_ntb_m=\c_tabl_ntb_current_col \else
+ \ifnum\m_tabl_ntb_m=\c_tabl_ntb_running_col\else
\tabl_ntb_td_pass_m{#1}%
\fi
\fi
\doloop % skip over columns that result from earlier span
- {\advance\c_tabl_ntb_current_col\plusone
- \ifcsname\tabl_ntb_tag_pattern\c_tabl_maximum_row\c_tabl_ntb_current_col\endcsname \else
+ {\advance\c_tabl_ntb_running_col\plusone
+ \ifcsname\tabl_ntb_tag_pattern\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\endcsname \else
\exitloop
\fi}%
% fill r*c cells and set span
@@ -638,8 +611,8 @@
\c_tabl_ntb_ny\naturaltableparameter\c!ny\relax
\ifnum\c_tabl_ntb_nx=\plusone
\ifnum\c_tabl_ntb_ny=\plusone
- \ifnum\c_tabl_ntb_current_col>\c_tabl_maximum_col\relax
- \c_tabl_maximum_col\c_tabl_ntb_current_col
+ \ifnum\c_tabl_ntb_running_col>\c_tabl_ntb_maximum_col\relax
+ \c_tabl_ntb_maximum_col\c_tabl_ntb_running_col
\fi
\else
\tabl_ntb_cell_preset
@@ -648,38 +621,38 @@
\tabl_ntb_cell_preset
\fi
% set values
- \tabl_ntb_let_tag\c_tabl_maximum_row\c_tabl_ntb_current_col\c_tabl_ntb_cell
- \tabl_ntb_set_col\c_tabl_maximum_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_nx}%
- \tabl_ntb_set_row\c_tabl_maximum_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_ny}%
+ \tabl_ntb_let_tag\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_cell
+ \tabl_ntb_set_col\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_nx}%
+ \tabl_ntb_set_row\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_ny}%
% the action key will change!
- \tabl_ntb_set_ref\c_tabl_maximum_row\c_tabl_ntb_current_col{\naturaltableparameter\c!action}%
+ \tabl_ntb_set_ref\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\naturaltableparameter\c!action}%
% save text
\normalexpanded
- {\tabl_ntb_set_txt_process\c_tabl_maximum_row\c_tabl_ntb_current_col{\the\c_tabl_maximum_row}{\the\c_tabl_ntb_current_col}}%
+ {\tabl_ntb_set_txt_process\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_maximum_row}{\the\c_tabl_ntb_running_col}}%
{#1}{#2}}
\def\tabl_ntb_td_nop[#1]#2\eTD
{\global\advance\c_tabl_ntb_spn\plusone\relax
\doloop
- {\advance\c_tabl_ntb_current_col\plusone
- \ifcsname\tabl_ntb_tag_pattern\c_tabl_maximum_row\c_tabl_ntb_current_col\endcsname \else
+ {\advance\c_tabl_ntb_running_col\plusone
+ \ifcsname\tabl_ntb_tag_pattern\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\endcsname \else
\exitloop
\fi}%
\c_tabl_ntb_nx\plusone
\c_tabl_ntb_ny\plusone
- \ifnum\c_tabl_ntb_current_col>\c_tabl_maximum_col\relax
- \c_tabl_maximum_col\c_tabl_ntb_current_col
+ \ifnum\c_tabl_ntb_running_col>\c_tabl_ntb_maximum_col\relax
+ \c_tabl_ntb_maximum_col\c_tabl_ntb_running_col
\fi
- \tabl_ntb_let_tag\c_tabl_maximum_row\c_tabl_ntb_current_col\c_tabl_ntb_cell
- \tabl_ntb_set_col\c_tabl_maximum_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_nx}%
- \tabl_ntb_set_row\c_tabl_maximum_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_ny}%
- \tabl_ntb_let_ref\c_tabl_maximum_row\c_tabl_ntb_current_col\empty
+ \tabl_ntb_let_tag\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_cell
+ \tabl_ntb_set_col\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_nx}%
+ \tabl_ntb_set_row\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_ny}%
+ \tabl_ntb_let_ref\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\empty
\normalexpanded
- {\tabl_ntb_set_txt_process\c_tabl_maximum_row\c_tabl_ntb_current_col{\the\c_tabl_maximum_row}{\the\c_tabl_ntb_current_col}}%
+ {\tabl_ntb_set_txt_process\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_maximum_row}{\the\c_tabl_ntb_running_col}}%
{#1}{#2}}
\def\tabl_ntb_td_pass_n#1%
- {\scratchcounter\numexpr\m_tabl_ntb_n-\c_tabl_ntb_current_col+\minusone-\c_tabl_ntb_spn\relax
+ {\scratchcounter\numexpr\m_tabl_ntb_n-\c_tabl_ntb_running_col+\minusone-\c_tabl_ntb_spn\relax
\ifnum\scratchcounter>\zerocount
\normalexpanded{\tabl_ntb_td[\c!nx=\the\scratchcounter,\c!n=,\c!m=,*sq=\v!no]}\eTD
\fi
@@ -692,7 +665,7 @@
\letnaturaltableparameter\c!m \empty}
\def\tabl_ntb_td_pass_m#1%
- {\scratchcounter\numexpr\m_tabl_ntb_m-\c_tabl_ntb_current_col+\minusone-\c_tabl_ntb_spn\relax
+ {\scratchcounter\numexpr\m_tabl_ntb_m-\c_tabl_ntb_running_col+\minusone-\c_tabl_ntb_spn\relax
\dorecurse\scratchcounter{\normalexpanded{\tabl_ntb_td[\c!n=,\c!m=]}\eTD}%
% can be sped up
\letnaturaltableparameter\c!ny\m_tabl_ntb_default_nr
@@ -704,20 +677,20 @@
\letnaturaltableparameter\c!m \empty}
\def\tabl_ntb_cell_preset
- {\c_tabl_ntb_current_row\c_tabl_maximum_row
- \c_tabl_ntb_current_col\c_tabl_ntb_current_col
+ {\c_tabl_ntb_current_row\c_tabl_ntb_maximum_row
+ \c_tabl_ntb_current_col\c_tabl_ntb_running_col
\dorecurse\c_tabl_ntb_ny\tabl_ntb_cell_preset_rows
% check max column
\advance\c_tabl_ntb_current_col\minusone
- \ifnum\c_tabl_ntb_current_col>\c_tabl_maximum_col\relax
- \c_tabl_maximum_col\c_tabl_ntb_current_col
+ \ifnum\c_tabl_ntb_current_col>\c_tabl_ntb_maximum_col\relax
+ \c_tabl_ntb_maximum_col\c_tabl_ntb_current_col
\fi}
\def\tabl_ntb_cell_preset_rows
- {\c_tabl_ntb_current_col\c_tabl_ntb_current_col
+ {\c_tabl_ntb_current_col\c_tabl_ntb_running_col
\tabl_ntb_set_col\c_tabl_ntb_current_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_nx}%
- \ifnum\c_tabl_ntb_nx>\c_tabl_maximum_row_span\relax
- \c_tabl_maximum_row_span\c_tabl_ntb_nx
+ \ifnum\c_tabl_ntb_nx>\c_tabl_ntb_maximum_row_span\relax
+ \c_tabl_ntb_maximum_row_span\c_tabl_ntb_nx
\fi
\dorecurse\c_tabl_ntb_nx\tabl_ntb_cell_preset_cells
\advance\c_tabl_ntb_current_row\plusone}
@@ -872,10 +845,10 @@
[\v!stretch=>\autoTBLspreadtrue]%
\linewidth\naturaltablelocalparameter\c!rulethickness % needs to be frozen
\dontcomplain
- \c_tabl_ntb_current_col\zerocount
- \c_tabl_maximum_row_span\plusone
- \c_tabl_maximum_col\zerocount
- \c_tabl_maximum_row\zerocount
+ \c_tabl_ntb_running_col \zerocount
+ \c_tabl_ntb_maximum_col \zerocount
+ \c_tabl_ntb_maximum_row \zerocount
+ \c_tabl_ntb_maximum_row_span\plusone
\let\bTR\dobTR
\let\bTD\dobTD
\let\bTH\dobTH
@@ -897,12 +870,12 @@
{% tricky and dirty order -)
\doifsometokselse\t_tabl_ntb_head % slow, better a flag
{\the\t_tabl_ntb_head
- \c_tabl_ntb_n_of_head_lines\c_tabl_maximum_row\relax
+ \c_tabl_ntb_n_of_head_lines\c_tabl_ntb_maximum_row\relax
\doifsometokselse\t_tabl_ntb_next
{\the\t_tabl_ntb_next
- \c_tabl_ntb_n_of_next_lines\numexpr\c_tabl_maximum_row-\c_tabl_ntb_n_of_head_lines\relax}%
+ \c_tabl_ntb_n_of_next_lines\numexpr\c_tabl_ntb_maximum_row-\c_tabl_ntb_n_of_head_lines\relax}%
{\c_tabl_ntb_n_of_next_lines\zerocount}% was 1
- \c_tabl_ntb_n_of_hdnx_lines\c_tabl_maximum_row}
+ \c_tabl_ntb_n_of_hdnx_lines\c_tabl_ntb_maximum_row}
{\c_tabl_ntb_n_of_head_lines\zerocount % was 1
\c_tabl_ntb_n_of_next_lines\zerocount
\c_tabl_ntb_n_of_hdnx_lines\zerocount}%
@@ -914,13 +887,13 @@
% to be sure
\tabl_ntb_loop_two
% check and do
- \ifcase\c_tabl_maximum_col\else
+ \ifcase\c_tabl_ntb_maximum_col\else
\startTBLprocessing
\tabl_ntb_table_start
- \dorecurse\c_tabl_maximum_row
+ \dorecurse\c_tabl_ntb_maximum_row
{\tabl_ntb_row_start
\c_tabl_ntb_current_row\recurselevel\relax
- \dorecurse\c_tabl_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\c_tabl_ntb_current_col\recurselevel\relax
\normalexpanded{\tabl_ntb_cell{\the\c_tabl_ntb_current_row}{\the\c_tabl_ntb_current_col}}}%
\tabl_ntb_row_stop}%
@@ -935,9 +908,9 @@
% tracing
% \iftrue
% \blank \tttf
- % \dorecurse\c_tabl_maximum_row
+ % \dorecurse\c_tabl_ntb_maximum_row
% {\c_tabl_ntb_current_row\recurselevel\relax
- % \dorecurse\c_tabl_maximum_col
+ % \dorecurse\c_tabl_ntb_maximum_col
% {\c_tabl_ntb_current_col\recurselevel\relax
% [r=\the\c_tabl_ntb_current_row,c=\the\c_tabl_ntb_current_col,h=\the\dimexpr\tabl_ntb_get_ht\c_tabl_ntb_current_row\c_tabl_ntb_current_col,w=\the\dimexpr\tabl_ntb_get_wd\c_tabl_ntb_current_row\c_tabl_ntb_current_col]}%
% \par}%
@@ -947,11 +920,11 @@
\tabl_ntb_table_pop}
\def\tabl_ntb_loop_one
- {\dorecurse\c_tabl_maximum_row{\tabl_ntb_loop_one_rows}}
+ {\dorecurse\c_tabl_ntb_maximum_row{\tabl_ntb_loop_one_rows}}
\def\tabl_ntb_loop_one_rows
{\c_tabl_ntb_current_row\recurselevel\relax
- \dorecurse\c_tabl_maximum_col\tabl_ntb_loop_one_cells}
+ \dorecurse\c_tabl_ntb_maximum_col\tabl_ntb_loop_one_cells}
\def\tabl_ntb_loop_one_cells
{\c_tabl_ntb_current_col\recurselevel\relax
@@ -970,7 +943,7 @@
\exitloop
\else
\advance\c_tabl_ntb_current_col_one\plusone
- \ifnum\c_tabl_ntb_current_col_one>\c_tabl_maximum_col\relax
+ \ifnum\c_tabl_ntb_current_col_one>\c_tabl_ntb_maximum_col\relax
\exitloop
\fi
\fi}%
@@ -980,12 +953,12 @@
\c_tabl_ntb_current_row_two\c_tabl_ntb_current_row_one
\c_tabl_ntb_current_col_two\c_tabl_ntb_current_col_one
\advance\c_tabl_ntb_current_row_one\plusone
- \ifnum\c_tabl_ntb_current_row_one>\c_tabl_maximum_row
+ \ifnum\c_tabl_ntb_current_row_one>\c_tabl_ntb_maximum_row
\exitloop
\fi
\fi}%
- \ifnum\c_tabl_ntb_current_row_two>\c_tabl_maximum_row\c_tabl_ntb_current_row_two\c_tabl_maximum_row\fi
- \ifnum\c_tabl_ntb_current_col_two>\c_tabl_maximum_col\c_tabl_ntb_current_col_two\c_tabl_maximum_col\fi
+ \ifnum\c_tabl_ntb_current_row_two>\c_tabl_ntb_maximum_row\c_tabl_ntb_current_row_two\c_tabl_ntb_maximum_row\fi
+ \ifnum\c_tabl_ntb_current_col_two>\c_tabl_ntb_maximum_col\c_tabl_ntb_current_col_two\c_tabl_ntb_maximum_col\fi
\c_tabl_ntb_current_row_two\numexpr\c_tabl_ntb_current_row_two-\c_tabl_ntb_current_row+\plusone\relax
\c_tabl_ntb_current_col_two\numexpr\c_tabl_ntb_current_col_two-\c_tabl_ntb_current_col+\plusone\relax
\c_tabl_ntb_current_row_one\c_tabl_ntb_current_row
@@ -1006,16 +979,16 @@
\fi}
\def\tabl_ntb_loop_two
- {\dorecurse\c_tabl_maximum_row\tabl_ntb_loop_two_rows}
+ {\dorecurse\c_tabl_ntb_maximum_row\tabl_ntb_loop_two_rows}
\def\tabl_ntb_loop_two_rows
{\c_tabl_ntb_current_row\recurselevel\relax
- \dorecurse\c_tabl_maximum_col\tabl_ntb_loop_two_cells}
+ \dorecurse\c_tabl_ntb_maximum_col\tabl_ntb_loop_two_cells}
\def\tabl_ntb_loop_two_cells
{\c_tabl_ntb_current_col\recurselevel\relax
\ifcsname\tabl_ntb_row_pattern\c_tabl_ntb_current_row\c_tabl_ntb_current_col\endcsname
- \scratchcounter\numexpr\c_tabl_maximum_row-\c_tabl_ntb_current_row+\plusone\relax
+ \scratchcounter\numexpr\c_tabl_ntb_maximum_row-\c_tabl_ntb_current_row+\plusone\relax
\ifnum\tabl_ntb_get_row\c_tabl_ntb_current_row\c_tabl_ntb_current_col>\scratchcounter
\tabl_ntb_set_row\c_tabl_ntb_current_row\c_tabl_ntb_current_col{\the\scratchcounter}%
\fi
@@ -1040,20 +1013,22 @@
\def\tabl_ntb_prelocate_error
{\writestatus\m!system{fatal error: use \string\prelocateTBLrows\space to increase table memory (now: \the\c_tabl_prelocated_rows)}}
+% \prelocateTBLrows{1000} % may speed up large tables
+
+\installcorenamespace{naturaltabletok}
+
\def\prelocateTBLrows#1% we start at zero so we have one to much, better play safe anyway
- {\dostepwiserecurse\c_tabl_prelocated_rows{#1}\plusone{\expandafter\newtoks\csname tbl:\recurselevel\endcsname}%
- \def\tabl_ntb_row_stop
+ {\dostepwiserecurse\c_tabl_prelocated_rows{#1}\plusone{\expandafter\newtoks\csname\??naturaltabletok\recurselevel\endcsname}%
+ \def\tabl_ntb_row_start
{\ifnum\c_tabl_ntb_row<\c_tabl_prelocated_rows\relax
- \expandafter\let\expandafter\t_tabl_ntb_row\csname tbl:\the\c_tabl_ntb_row\endcsname\t_tabl_ntb_row\emptytoks
+ \expandafter\let\expandafter\t_tabl_ntb_row\csname\??naturaltabletok\the\c_tabl_ntb_row\endcsname\t_tabl_ntb_row\emptytoks
\else
\tabl_ntb_prelocate_error
\fi}%
\def\tabl_ntb_row_stop
- {\normalexpanded{\t_tabl_ntb{\the\t_tabl_ntb\noexpand\tabl_ntb_row_align_start\the\csname tbl:\the\c_tabl_ntb_row\endcsname\tabl_ntb_row_align_stop}}}%
+ {\normalexpanded{\t_tabl_ntb{\the\t_tabl_ntb\noexpand\tabl_ntb_row_align_start\the\csname\??naturaltabletok\the\c_tabl_ntb_row\endcsname\tabl_ntb_row_align_stop}}}%
\global\c_tabl_prelocated_rows#1\relax}
-% \prelocateTBLrows{1000} % may speed up large tables
-
% We use aligments to handle the empty (skipped) columns, so
% that we don't have to (re|)|calculate these.
@@ -1099,7 +1074,7 @@
\bgroup % protect local vars
\scratchcounter\numexpr\c_tabl_ntb_row+\plusone\relax
\ifnum\scratchcounter>\c_tabl_ntb_n_of_hdnx_lines\relax
- \ifnum\scratchcounter<\c_tabl_maximum_row\relax
+ \ifnum\scratchcounter<\c_tabl_ntb_maximum_row\relax
\doifsomething{\naturaltablelocalparameter\c!spaceinbetween}
{\blank[\naturaltablelocalparameter\c!spaceinbetween]}%
\fi
@@ -1119,28 +1094,40 @@
\halign\bgroup
\registerparoptions
% watch out: tagging the cell happens at the outer level (faster)
- \ignorespaces##\unskip&&\ignorespaces##\unskip\cr % one too many
+ \ignorespaces\alignmark\alignmark\unskip
+ \aligntab\aligntab
+ \ignorespaces\alignmark\alignmark\unskip
+ \cr % one too many
\the\t_tabl_ntb
\dostoptagged
\egroup
\dostoptagged}
\setvalue{\??naturaltablecell\the\c_tabl_ntb_none}#1#2%
- {\tabl_ntb_span{#1}{#2}}
+ {\scratchcounter\tabl_ntb_get_col{#1}{#2}\relax
+ \ifnum\scratchcounter>\zerocount
+ \advance\scratchcounter\minusone
+ \ifnum\scratchcounter>\zerocount
+ \tabl_ntb_span
+ \fi
+ \t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_column_next}
+ \fi}
\setvalue{\??naturaltablecell\the\c_tabl_ntb_cell}#1#2%
{\t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_pass #1 #2 }% space delimited -> less tokens
- \tabl_ntb_span{#1}{#2}}
-
-\def\tabl_ntb_span#1#2%
- {\scratchcounter\tabl_ntb_get_col{#1}{#2}\relax
+ \scratchcounter\tabl_ntb_get_col{#1}{#2}\relax
\ifnum\scratchcounter>\zerocount
- \advance\scratchcounter \minusone
- \dorecurse\scratchcounter{\t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_column_span}}%
- \dorecurse\scratchcounter{\t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_column_skip}}%
- \t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_column_next}%
+ \advance\scratchcounter\minusone
+ \ifnum\scratchcounter>\zerocount
+ \tabl_ntb_span
+ \fi
+ \t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_column_next}
\fi}
+\def\tabl_ntb_span
+ {\dorecurse\scratchcounter{\t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_column_span}}%
+ \dorecurse\scratchcounter{\t_tabl_ntb_row\expandafter{\the\t_tabl_ntb_row\tabl_ntb_column_skip}}}
+
\unexpanded\def\tabl_ntb_cell#1#2%
{\csname\??naturaltablecell\the\tabl_ntb_get_tag{#1}{#2}\endcsname{#1}{#2}}
@@ -1163,7 +1150,7 @@
\tabl_ntb_get_wid\scratchcounter
+\naturaltablelocalparameter\c!columndistance
\ifnum\recurselevel<\!!counta
- \tabl_ntb_get_dis\scratchcounter
+ +\tabl_ntb_get_dis\scratchcounter
\fi
\relax
\advance\scratchcounter\plusone}%
@@ -1184,7 +1171,7 @@
\tablecellcolumns\!!counta % used later so don't adapt these
\tablecellrows \!!countb % used later so don't adapt these
\d_tabl_ntb_height\zeropoint
- \ifnum\!!counta=\c_tabl_maximum_col\relax
+ \ifnum\!!counta=\c_tabl_ntb_maximum_col\relax
% case: nc=maxcolumns
\else
\scratchcounter#1\relax
@@ -1199,8 +1186,13 @@
\d_tabl_ntb_width\zeropoint
\scratchcounter\c_tabl_ntb_col
\dorecurse\!!counta
- {\advance\d_tabl_ntb_width\dimexpr\tabl_ntb_get_wid\scratchcounter+\naturaltablelocalparameter\c!columndistance\relax
- \ifnum\recurselevel<\!!counta \advance\d_tabl_ntb_width \tabl_ntb_get_dis\scratchcounter\fi
+ {\advance\d_tabl_ntb_width\dimexpr
+ \tabl_ntb_get_wid\scratchcounter
+ +\naturaltablelocalparameter\c!columndistance
+ \ifnum\recurselevel<\!!counta
+ +\tabl_ntb_get_dis\scratchcounter
+ \fi
+ \relax
\advance\scratchcounter\plusone}%
\advance\d_tabl_ntb_width-\naturaltablelocalparameter\c!columndistance\relax
% cell
@@ -1208,7 +1200,7 @@
\dotagTABLEsignal % maybe we need to add some packaging in this case
\tabl_ntb_get_txt{#1}{#2}%
\egroup
- \ifnum\!!counta=\c_tabl_maximum_col\relax
+ \ifnum\!!counta=\c_tabl_ntb_maximum_col\relax
% case: nc=maxcolumns
\else
\scratchdimen\tabl_ntb_get_hei{#1}%
@@ -1237,23 +1229,23 @@
{\setupcurrentnaturaltablelocal[\c!frame=\v!off,\c!background=,\c!align=\v!no]%
\inheritednaturaltablelocalframed{\strut}}%
\edef\minimalcellheight{\the\ht\scratchbox}% not used
- \dorecurse\c_tabl_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\tabl_ntb_let_aut\recurselevel\zeropoint
% new
\c_tabl_ntb_current_col_one\recurselevel\relax
- \dorecurse\c_tabl_maximum_row
+ \dorecurse\c_tabl_ntb_maximum_row
{\tabl_ntb_let_wd\recurselevel\c_tabl_ntb_current_col_one\zeropoint
\tabl_ntb_let_ht\recurselevel\c_tabl_ntb_current_col_one\zeropoint}%
% till here
\tabl_ntb_let_wid\recurselevel\zeropoint
\tabl_ntb_let_dis\recurselevel\zeropoint}%
- \dorecurse\c_tabl_maximum_row
+ \dorecurse\c_tabl_ntb_maximum_row
{\tabl_ntb_let_hei\recurselevel\maxdimen}%
\c_tabl_tbl_pass\plusone
\let\tabl_ntb_pass\tabl_ntb_pass_one
\let\tabl_ntb_cell_process\tabl_ntb_cell_process_a
\setbox0\vbox{\settrialtypesetting \tabl_ntb_flush_content}%
- \tabl_ntb_let_dis\c_tabl_maximum_col\zeropoint
+ \tabl_ntb_let_dis\c_tabl_ntb_maximum_col\zeropoint
\ifautoTBLspread
% experimental, stretch non fixed cells to \hsize
\tabl_ntb_check_widths_one % trial run
@@ -1268,7 +1260,7 @@
\let\tabl_ntb_cell_process\tabl_ntb_cell_process_b
\setbox\scratchbox\vbox{\settrialtypesetting \tabl_ntb_flush_content}%
\fi
- \else\ifautoTBLrowspan\ifnum\c_tabl_maximum_row_span>1 % max ?
+ \else\ifautoTBLrowspan\ifnum\c_tabl_ntb_maximum_row_span>1 % max ?
% added jan 2002 because nx=* did no longer work
\edef\savedhsize{\the\hsize}%
\hsize\wd0\relax % new per 17/04/2006
@@ -1297,10 +1289,10 @@
\fi\fi{\tabl_ntb_flush_content}}
\def\tabl_ntb_stretch_widths % more variants, e.g. a max to \dimend
- {\ifcase\c_tabl_maximum_col\else % else division by zero
+ {\ifcase\c_tabl_ntb_maximum_col\else % else division by zero
\!!dimend\zeropoint
\!!dimene\hsize
- \dorecurse\c_tabl_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\advance\!!dimend\dimexpr\tabl_ntb_get_wid\recurselevel+\naturaltablelocalparameter\c!columndistance\relax
\advance\!!dimene-\tabl_ntb_get_dis\recurselevel}%
\advance\!!dimend\dimexpr-\naturaltablelocalparameter\c!columndistance+\naturaltablelocalparameter\c!leftmargindistance+\naturaltablelocalparameter\c!rightmargindistance\relax
@@ -1308,8 +1300,8 @@
\ifdim\!!dimend<\!!dimene
\advance\!!dimend-\!!dimene
\!!dimend-\!!dimend
- \divide\!!dimend\c_tabl_maximum_col
- \dorecurse\c_tabl_maximum_col
+ \divide\!!dimend\c_tabl_ntb_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\tabl_ntb_set_wid\recurselevel{\the\dimexpr\tabl_ntb_get_wid\recurselevel+\!!dimend\relax}}%
\fi
\fi}
@@ -1377,7 +1369,7 @@
{\iftraceTABLE\tabl_ntb_show_widths{B#1}\fi
\!!counta\zerocount
\!!dimena\dimexpr\hsize-\naturaltablelocalparameter\c!leftmargindistance-\naturaltablelocalparameter\c!rightmargindistance-\naturaltablelocalparameter\c!columndistance\relax
- \dorecurse\c_tabl_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\scratchdimen\tabl_ntb_get_aut\recurselevel\relax
\advance\!!dimena-\tabl_ntb_get_dis\recurselevel\relax
\ifdim\scratchdimen>\zeropoint\relax
@@ -1398,7 +1390,7 @@
\fi
\fi}%
\ifcase\!!counta \else \divide\!!dimena \!!counta \fi
- \dorecurse\c_tabl_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\scratchdimen\tabl_ntb_get_wid\recurselevel\relax
\ifcase#1\relax
\ifdim\scratchdimen<\!!dimena % take natural width
@@ -1419,7 +1411,7 @@
\dimen0=\tabl_ntb_get_ht\c_tabl_ntb_current_row_three\c_tabl_ntb_current_col_three
% find nearest height in row
\dimen2=\zeropoint
- \dorecurse\c_tabl_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\ifnum\recurselevel=\c_tabl_ntb_current_col_three\else
\ifcsname\tabl_ntb_row_pattern\c_tabl_ntb_current_row_three\recurselevel\endcsname
\!!countc=\tabl_ntb_get_row\c_tabl_ntb_current_row_three\recurselevel\relax
@@ -1453,7 +1445,7 @@
\c_tabl_ntb_current_row_four\c_tabl_ntb_current_row_three
\tabl_ntb_set_hei\c_tabl_ntb_current_row_three{\the\dimen2}%
\dorecurse\!!countb
- {\dorecurse\c_tabl_maximum_col
+ {\dorecurse\c_tabl_ntb_maximum_col
{\ifnum\recurselevel=\c_tabl_ntb_current_col_three\else
\scratchdimen\dimexpr\tabl_ntb_get_ht\c_tabl_ntb_current_row_four\recurselevel+\dimen0\relax
\tabl_ntb_set_ht\c_tabl_ntb_current_row_four\recurselevel{\the\scratchdimen}%
@@ -1472,9 +1464,9 @@
\def\tabl_ntb_check_heights_one
- {\dorecurse\c_tabl_maximum_row
+ {\dorecurse\c_tabl_ntb_maximum_row
{\c_tabl_ntb_current_row_three\recurselevel\relax
- \dorecurse\c_tabl_maximum_col
+ \dorecurse\c_tabl_ntb_maximum_col
{\c_tabl_ntb_current_col_three\recurselevel\relax
\ifcsname\tabl_ntb_row_pattern\c_tabl_ntb_current_row_three\c_tabl_ntb_current_col_three\endcsname
\tabl_ntb_check_heights_one_indeed
@@ -1485,7 +1477,7 @@
\def\tabl_ntb_show_widths#1%
{\vbox
- {\forgetall\tttf[#1]\dorecurse\c_tabl_maximum_col
+ {\forgetall\tttf[#1]\dorecurse\c_tabl_ntb_maximum_col
{\scratchdimen\tabl_ntb_get_wid\recurselevel\relax
[\recurselevel:\the\scratchdimen]}}}
@@ -1591,7 +1583,7 @@
\else
\scratchdimen\tabl_ntb_get_wid\c_tabl_ntb_col\relax
\ifdim\scratchdimen>\zeropoint\relax
- \ifnum\tabl_ntb_get_col{#1}{#2}=\c_tabl_maximum_col\relax
+ \ifnum\tabl_ntb_get_col{#1}{#2}=\c_tabl_ntb_maximum_col\relax
\scratchdimen\hsize
\fi
\fi