1
2
3
4
5
6
7
8
9
10\writestatus{loading}{ConTeXt Table Macros Plain Tabular}
11
12
13
14\unprotect
15
16\newconditional \c_tabl_plain_cr
17\newconditional \c_tabl_plain_use_tab
18\newbox \b_tabl_plain_tabs
19\newbox \b_tabl_plain_tabs_yet
20\newbox \b_tabl_plain_tabs_done
21\newdimen \d_tabl_plain_tab
22
23\let\m_tabl_plain_next\relax
24
25\def\cleartabs
26 {\global\setbox\b_tabl_plain_tabs_yet\emptyhbox
27 \setbox\b_tabl_plain_tabs\emptyhbox}
28
29\def\settabs
30 {\setbox\b_tabl_plain_tabs\emptyhbox
31 \futurelet\m_tabl_plain_next\tabl_plain_set_tabs}
32
33\def\tabalign
34 {\settrue\c_tabl_plain_use_tab
35 \tabl_plain_make_tab_box}
36
37\ifdefined\+ \else
38 \let\+\tabalign
39\fi
40
41\def\tabl_plain_set_tabs
42 {\ifx\m_tabl_plain_next\+
43 \let\tabl_plain_nxt\tabl_plain_align
44 \else\ifx\m_tabl_plain_next\tabalign
45 \let\tabl_plain_nxt\tabl_plain_align
46 \else
47 \let\tabl_plain_nxt\tabl_plain_set_cols
48 \fi\fi
49 \let\m_tabl_plain_next\relax
50 \tabl_plain_nxt}
51
52\def\tabl_plain_align
53 {\afterassignment\tabl_plain_set_tab
54 \let\tabl_plain_nxt}
55
56\def\tabl_plain_set_tab
57 {\let\tabl_plain_nxt\relax
58 \setfalse\c_tabl_plain_use_tab
59 \tabl_plain_make_tab_box}
60
61\def\tabl_plain_set_cols#1\columns
62 {\scratchcounter#1\relax
63 \d_tabl_plain_tab\hsize
64 \loop
65 \ifnum\scratchcounter>\zerocount
66 \tabl_plain_other
67 \repeat}
68
69\def\tabl_plain_other
70 {\scratchdimen\d_tabl_plain_tab
71 \divide\scratchdimen\scratchcounter
72 \setbox\b_tabl_plain_tabs\hbox
73 {\hbox to\scratchdimen{}
74 \unhbox\b_tabl_plain_tabs}
75 \advance\d_tabl_plain_tab\scratchdimen
76 \advance\scratchcounter\minusone}
77
78\def\tabl_plain_make_tab_box
79 {\begingroup
80 \let\+\tabalign
81 \global\setbox\b_tabl_plain_tabs_yet\copy\b_tabl_plain_tabs
82 \global\setbox\b_tabl_plain_tabs_done\emptyhbox
83 \let\cr\tabl_plain_cr
84 \setbox\scratchbox\vbox\bgroup
85 \setfalse\c_tabl_plain_cr
86 \ialign\bgroup
87 \aligntab
88 \tabl_plain_begin_tab_box
89 \alignmark\alignmark
90 \tabl_plain_end_tab_box
91 \crcr}
92
93\def\tabl_plain_cr
94 {\settrue\c_tabl_plain_cr
95 \crcr
96 \egroup
97 \egroup
98 \ifconditional\c_tabl_plain_use_tab
99 \unvbox\scratchbox
100 \lastbox
101 \fi
102 \endgroup
103 \setbox\b_tabl_plain_tabs\hbox
104 {\unhbox\b_tabl_plain_tabs_yet
105 \unhbox\b_tabl_plain_tabs_done}}
106
107\def\tabl_plain_begin_tab_box
108 {\setbox\scratchbox\hbox\bgroup}
109
110\def\tabl_plain_end_tab_box
111 {\ifconditional\c_tabl_plain_cr
112 \egroup
113 \else
114 \hss
115 \egroup
116 \global\setbox\b_tabl_plain_tabs_yet\hbox
117 {\unhbox\b_tabl_plain_tabs_yet
118 \global\setbox\globalscratchbox\lastbox}
119 \ifvoid\globalscratchbox
120 \global\setbox\globalscratchbox\hbox to \wd\scratchbox
121 {}
122 \else
123 \setbox\scratchbox\hbox to \wd\globalscratchbox
124 {\unhbox\scratchbox}
125 \fi
126 \global\setbox\b_tabl_plain_tabs_done\hbox
127 {\box\globalscratchbox
128 \unhbox\b_tabl_plain_tabs_done}
129 \fi
130 \box\scratchbox}
131
132\protect \endinput
133 |