examples-naturaltables.tex /size: 12 Kb    last modification: 2025-02-21 11:03
1\environment examples-style
2
3\startdocument
4  [title={Natural Tables},
5   author={Hans Hagen}]
6
7\startbuffer[knuth-1]
8    Thus, I came to the conclusion that the designer of a new
9    system must not only be the implementer and first
10    large||scale user; the designer should also write the first
11    user manual.
12\stopbuffer
13
14\startbuffer[knuth-2]
15    The separation of any of these four components would have
16    hurt \TeX\ significantly. If I had not participated fully in
17    all these activities, literally hundreds of improvements
18    would never have been made, because I would never have
19    thought of them or perceived why they were important.
20\stopbuffer
21
22\startbuffer[knuth-3]
23    But a system cannot be successful if it is too strongly
24    influenced by a single person. Once the initial design is
25    complete and fairly robust, the real test begins as people
26    with many different viewpoints undertake their own
27    experiments.
28\stopbuffer
29
30% ok
31
32\StartExample
33\bTABLE
34\bTR \bTD[nr=3] 1 \eTD \bTD[nc=2] 2/3     \eTD \bTD[nr=3] 4 \eTD \eTR
35\bTR                   \bTD 2 \eTD \bTD 3 \eTD                   \eTR
36\bTR                   \bTD 2 \eTD \bTD 3 \eTD                   \eTR
37\bTR \bTD[nc=3] 1/2/3                     \eTD \bTD 4       \eTD \eTR
38\bTR \bTD 1       \eTD \bTD 2 \eTD \bTD 3 \eTD \bTD 4       \eTD \eTR
39\eTABLE
40\StopExample
41
42% ok
43
44\StartExample
45\setupTABLE[1,4][2][background=color,backgroundcolor=red]
46\bTABLE
47\bTR \bTD 1       \eTD \bTD 2 \eTD \bTD 3 \eTD \bTD 4       \eTD \eTR
48\bTR \bTD[nr=3] 1 \eTD \bTD[nc=2] 2/3     \eTD \bTD[nr=3] 4 \eTD \eTR
49\bTR                   \bTD[nc=2] 2/3     \eTD                   \eTR
50\bTR                   \bTD[nc=2] 2/3     \eTD                   \eTR
51\eTABLE
52\StopExample
53
54% ok
55
56\StartExample
57\bTABLE[align={middle,lohi}]
58\bTR \bTD 1 \eTD \bTD 2 \eTD \bTD 3 \eTD            \bTD 4 \eTD \eTR
59\bTR \bTD 1 \eTD \bTD[nr=2,nc=2,color=red] 2/3 \eTD \bTD 4 \eTD \eTR
60\bTR \bTD 1 \eTD                                    \bTD 4 \eTD \eTR
61\bTR \bTD 1 \eTD \bTD 2 \eTD \bTD 3 \eTD            \bTD 4 \eTD \eTR
62\eTABLE
63\StopExample
64
65% ok
66
67\StartExample
68\hbox \bgroup \ignorespaces
69
70\bTABLE
71\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD cc \eTD \eTR
72\bTR \bTD bb \eTD                    \bTD dd \eTD \eTR
73\eTABLE
74
75\unskip \quad \ignorespaces
76
77\bTABLE
78\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD cc \eTD \bTD yy \eTD \eTR
79\bTR \bTD bb \eTD                    \bTD dd \eTD              \eTR
80\eTABLE
81
82\unskip \egroup
83\StopExample
84
85% ok
86
87\StartExample
88\setupTABLE[column][odd][background=color,backgroundcolor=red]
89\setupTABLE[row][odd][background=color,backgroundcolor=blue]
90\setupTABLE[even][odd][background=color,backgroundcolor=red]
91
92\bTABLE
93\bTR \bTD a \eTD \bTD bb \eTD \bTD ccc \eTD \bTD dd \eTD \bTD e \eTD \eTR
94\bTR \bTD a \eTD \bTD bb \eTD \bTD ccc \eTD \bTD dd \eTD \bTD e \eTD \eTR
95\bTR \bTD a \eTD \bTD bb \eTD \bTD ccc \eTD \bTD dd \eTD \bTD e \eTD \eTR
96\bTR \bTD a \eTD \bTD bb \eTD \bTD ccc \eTD \bTD dd \eTD \bTD e \eTD \eTR
97\bTR \bTD a \eTD \bTD bb \eTD \bTD ccc \eTD \bTD dd \eTD \bTD e \eTD \eTR
98\bTR \bTD a \eTD \bTD bb \eTD \bTD ccc \eTD \bTD dd \eTD \bTD e \eTD \eTR
99\bTR \bTD a \eTD \bTD bb \eTD \bTD ccc \eTD \bTD dd \eTD \bTD e \eTD \eTR
100\eTABLE
101\StopExample
102
103% ok
104
105\StartExample
106\hbox \bgroup \ignorespaces
107
108\bTABLE
109\setupTABLE[column][1][width=2cm]
110\bTR \bTD aa \eTD \bTD bbb \eTD \bTD cc \eTD \bTD d \eTD \bTD eeee \eTD \eTR
111\bTR \bTD aa \eTD \bTD bbb \eTD \bTD cc \eTD \bTD d \eTD \bTD eeee \eTD \eTR
112\bTR \bTD aa \eTD \bTD bbb \eTD \bTD cc \eTD \bTD d \eTD \bTD eeee \eTD \eTR
113\eTABLE
114
115\unskip \quad \ignorespaces
116
117\bTABLE
118\setupTABLE[column][width=3em]
119\bTR \bTD aa \eTD \bTD bbb \eTD \bTD cc \eTD \bTD d \eTD \bTD eeee \eTD \eTR
120\bTR \bTD aa \eTD \bTD bbb \eTD \bTD cc \eTD \bTD d \eTD \bTD eeee \eTD \eTR
121\bTR \bTD aa \eTD \bTD bbb \eTD \bTD cc \eTD \bTD d \eTD \bTD eeee \eTD \eTR
122\eTABLE
123
124\unskip \egroup
125\StopExample
126
127% ok
128
129\StartExample
130\hbox \bgroup \ignorespaces
131
132\bTABLE
133\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR
134\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR
135\eTABLE
136
137\unskip \quad \ignorespaces
138
139\bTABLE
140\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR \bTR \eTR
141\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR \bTR \eTR
142\eTABLE
143
144\unskip \quad \ignorespaces
145
146\bTABLE
147\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR \bTR \eTR
148\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR
149\eTABLE
150
151\unskip \quad \ignorespaces
152
153\bTABLE
154\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR
155\bTR \bTD aa \eTD \bTD[nr=2] xx \eTD \bTD bb \eTD \bTD cc \eTD \eTR \bTR \eTR
156\eTABLE
157
158\unskip \egroup
159\StopExample
160
161\StartExample
162\startuniqueMPgraphic{crossed}
163  path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
164  fill p withcolor \MPcolor{red} ;
165  drawoptions (withpen pencircle scaled 2pt withcolor \MPcolor{blue}) ;
166  draw p ; draw llcorner p--urcorner p ; draw ulcorner p--lrcorner p ;
167\stopuniqueMPgraphic
168
169\defineoverlay[crossed][\uniqueMPgraphic{crossed}]
170
171\bTABLE[width=.2\textwidth,background=crossed,frame=off]
172\bTR \bTD[align=left]   \getbuffer[knuth-1] \eTD
173     \bTD[align=middle] \getbuffer[knuth-1] \eTD
174     \bTD[align=right]  \getbuffer[knuth-1] \eTD \eTR
175\eTABLE
176\StopExample
177
178\StartExample
179\startuniqueMPgraphic{fill}
180  path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
181  fill p withcolor \MPcolor{red} ;
182\stopuniqueMPgraphic
183
184\startuniqueMPgraphic{cross}
185  path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
186  drawoptions (withpen pencircle scaled 2pt withcolor \MPcolor{gray}) ;
187  draw llcorner p--urcorner p ; draw ulcorner p--lrcorner p ;
188  draw p withpen pencircle scaled 2pt withcolor \MPcolor{blue} ;
189\stopuniqueMPgraphic
190
191\defineoverlay[fill] [\uniqueMPgraphic{fill}]
192\defineoverlay[cross][\uniqueMPgraphic{cross}]
193
194\bTABLE[width=.2\textwidth,background={fill,foreground,cross},frame=off]
195\bTR \bTD[align=left]   \getbuffer[knuth-1] \eTD
196     \bTD[align=middle] \getbuffer[knuth-1] \eTD
197     \bTD[align=right]  \getbuffer[knuth-1] \eTD \eTR
198\eTABLE
199\StopExample
200
201% \StartExample
202% \startuniqueMPgraphic{hashed}
203%   stripe_path_a
204%    (withpen pencircle scaled \overlaylinewidth withcolor blue)
205%    (draw)
206%    unitsquare xscaled \overlaywidth yscaled \overlayheight ;
207% \stopuniqueMPgraphic
208%
209% \defineoverlay[crossed][\uniqueMPgraphic{hashed}]
210%
211% \setupTABLE[column][width=.2\textwidth,background=striped,frame=off]
212% \bTABLE
213%   \bTR
214%     \bTD[align=left]   left   \par in the first place \eTD
215%     \bTD[align=middle] middle \par a second position  \eTD
216%     \bTD[align=right]  right  \par the third term     \eTD
217%   \eTR
218% \eTABLE
219% \StopExample
220
221% first attempt
222% second best
223% third at last
224
225% ok
226
227\StartExample
228\setupTABLE[row][odd] [background=color,backgroundcolor=red,frame=off]
229\setupTABLE[row][even][background=color,backgroundcolor=gray,frame=off]
230
231\bTABLE
232\bTR \bTD first  \eTD \bTD alpha \eTD \bTD one   \eTD \eTR
233\bTR \bTD second \eTD \bTD beta  \eTD \bTD two   \eTD \eTR
234\bTR \bTD third  \eTD \bTD gamma \eTD \bTD three \eTD \eTR
235\eTABLE
236\StopExample
237
238% ok
239
240\StartExample
241\setupTABLE[background=color,backgroundcolor=red,frame=off]
242\setupTABLE[column][2][backgroundcolor=black,color=white]
243
244\bTABLE
245\bTR \bTD a \eTD \bTD $\alpha$ \eTD \bTD i   \eTD \bTD 1 \eTD \eTR
246\bTR \bTD b \eTD \bTD $\beta $ \eTD \bTD ii  \eTD \bTD 2 \eTD \eTR
247\bTR \bTD c \eTD \bTD $\gamma$ \eTD \bTD iii \eTD \bTD 3 \eTD \eTR
248\eTABLE
249\StopExample
250
251% ok
252
253\StartExample
254\bTABLE
255\setupTABLE[column][1][width=175pt]
256\bTR \bTD \getbuffer[knuth-1] \eTD
257     \bTD \getbuffer[knuth-1] \eTD \bTD first  \eTD \eTR
258\bTR \bTD \getbuffer[knuth-2] \eTD
259     \bTD \getbuffer[knuth-2] \eTD \bTD second \eTD \eTR
260\eTABLE
261\StopExample
262
263% ok
264
265\StartExample
266\bTABLE
267\bTR \bTD \getbuffer[knuth-1] \eTD
268     \bTD \getbuffer[knuth-1] \eTD \bTD first  \eTD \eTR
269\bTR \bTD \getbuffer[knuth-2] \eTD
270     \bTD \getbuffer[knuth-2] \eTD \bTD second \eTD \eTR
271\eTABLE
272\StopExample
273
274% ok
275
276\StartExample
277\bTABLE
278\setupTABLE[background=color,backgroundcolor=red,color=gray,frame=off]
279\setupTABLE[column][last][align={middle,lohi}]
280\setupTABLE[1][2]  [backgroundcolor=gray,color=red]
281\setupTABLE[2][1,3][backgroundcolor=gray,color=red]
282\bTR \bTD \getbuffer[knuth-1] \eTD \bTD first quote  \eTD \eTR
283\bTR \bTD \getbuffer[knuth-2] \eTD \bTD second quote \eTD \eTR
284\bTR \bTD \getbuffer[knuth-3] \eTD \bTD third quote  \eTD \eTR
285\eTABLE
286\StopExample
287
288% ok
289
290\StartExample
291\bTABLE
292\bTR \bTD[width=80pt]  \getbuffer[knuth-1] \eTD \bTD first  \eTD \eTR
293\bTR \bTD[width=200pt] \getbuffer[knuth-2] \eTD \bTD second \eTD \eTR
294\eTABLE
295\StopExample
296
297% ok
298
299\StartExample
300\bTABLE
301\bTR \bTD[width=80pt]  \getbuffer[knuth-1] \eTD \bTD first  \eTD \eTR
302\bTR \bTD[width=200pt] \getbuffer[knuth-2] \eTD \bTD second \eTD \eTR
303\bTR \bTD              \getbuffer[knuth-3] \eTD \bTD third  \eTD \eTR
304\eTABLE
305\StopExample
306
307% to do
308
309\StartExample
310\bTABLE
311\bTR \bTD[nc=2] \getbuffer[knuth-1]                         \eTD \eTR
312\bTR \bTD \getbuffer[knuth-2] \eTD \bTD \getbuffer[knuth-2] \eTD \eTR
313\bTR \bTD \getbuffer[knuth-3] \eTD \bTD \getbuffer[knuth-1] \eTD \eTR
314\eTABLE
315\StopExample
316
317% to do
318
319\StartExample
320\bTABLE
321\bTR \bTD[nc=5] \getbuffer[knuth-1]                                     \eTD \eTR
322\bTR \bTD[nc=2] \getbuffer[knuth-2] \eTD \bTD[nc=3] \getbuffer[knuth-2] \eTD \eTR
323\bTR \bTD[nc=3] \getbuffer[knuth-3] \eTD \bTD[nc=2] \getbuffer[knuth-1] \eTD \eTR
324\eTABLE
325\StopExample
326
327% to do
328
329\StartExample
330\bTABLE[width=.5\hsize]
331\bTR \bTD[nc=2] \getbuffer[knuth-1]                         \eTD \eTR
332\bTR \bTD \getbuffer[knuth-2] \eTD \bTD \getbuffer[knuth-2] \eTD \eTR
333\bTR \bTD \getbuffer[knuth-3] \eTD \bTD \getbuffer[knuth-1] \eTD \eTR
334\eTABLE
335\StopExample
336
337% ok
338
339\StartExample
340\bTABLE
341\bTR \bTD[nc=2] \getbuffer[knuth-1] \eTD
342     \bTD[nr=2] \getbuffer[knuth-1] \eTD \eTR
343\bTR \bTD \getbuffer[knuth-2]       \eTD \bTD first  \eTD \eTR
344\bTR \bTD \getbuffer[knuth-3]       \eTD \bTD second \eTD \eTR
345\eTABLE
346\StopExample
347
348% ok
349
350\StartExample
351\setupTABLE                    [frame=off]
352\setupTABLE[column][first]     [leftframe=on]
353\setupTABLE[column][last]      [rightframe=on]
354\setupTABLE[row]   [first]     [topframe=on]
355\setupTABLE[row]   [first,last][bottomframe=on]
356
357\setupTABLE[column][1][alignmentcharacter={.},aligncharacter=yes,align=middle]
358\setupTABLE[column][2][alignmentcharacter={,},aligncharacter=yes,align=middle]
359
360\bTABLE
361\bTR\bTH first     \eTH\bTH second \eTH\bTH third     \eTH\bTH fourth\eTH\eTR
362\bTR\bTD 100.000,00\eTD\bTD 1,0    \eTD\bTD 100.000,00\eTD\bTD 1,0   \eTD\eTR
363\bTR\bTD 10.000,00 \eTD\bTD 10,0   \eTD\bTD 10.000,00 \eTD\bTD 10,0  \eTD\eTR
364\bTR\bTD 100,00    \eTD\bTD 1,00   \eTD\bTD 100,00    \eTD\bTD 1,00  \eTD\eTR
365\bTR\bTD 10        \eTD\bTD 10,00  \eTD\bTD 10        \eTD\bTD 10,00 \eTD\eTR
366\eTABLE
367\StopExample
368
369\StartExample
370\definecolor[back-1][r=.8,g=.8,b=.4]
371\definecolor[back-2][r=.8,g=.8,b=.6]
372\definecolor[back-3][r=.8,g=.8,b=.8]
373
374\setupTABLE[background=color,frame=off,framecolor=white]
375\setupTABLE[row][1]   [rulethickness=2pt,bottomframe=on]
376\setupTABLE[row][1]   [backgroundcolor=back-1]
377\setupTABLE[row][odd] [backgroundcolor=back-2]
378\setupTABLE[row][even][backgroundcolor=back-3]
379
380\bTABLE
381\bTR \bTD aa \eTD \bTD bb \eTD \bTD cc \eTD \bTD dd \eTD \eTR
382\bTR \bTD aa \eTD \bTD bb \eTD \bTD cc \eTD \bTD dd \eTD \eTR
383\bTR \bTD aa \eTD \bTD bb \eTD \bTD cc \eTD \bTD dd \eTD \eTR
384\bTR \bTD aa \eTD \bTD bb \eTD \bTD cc \eTD \bTD dd \eTD \eTR
385\bTR \bTD aa \eTD \bTD bb \eTD \bTD cc \eTD \bTD dd \eTD \eTR
386\bTR \bTD aa \eTD \bTD bb \eTD \bTD cc \eTD \bTD dd \eTD \eTR
387\bTR \bTD aa \eTD \bTD bb \eTD \bTD cc \eTD \bTD dd \eTD \eTR
388\eTABLE
389\StopExample
390
391\StartExample
392\setupTABLE[frame=off,width=3em]
393\setupTABLE[c][each][align={middle,lohi}]
394\setupTABLE[r][1,4][topframe=on]
395\setupTABLE[r][3,4][bottomframe=on]
396\setupTABLE[1,4][2][topframe=on,bottomframe=on]
397\setupTABLE[2][2][topframe=on]
398\setupTABLE[3][2][bottomframe=on]
399
400\bTABLE
401\bTR\bTD1/1\eTD               \bTD1/2\eTD\bTD1/3\eTD\bTD1/4\eTD\bTD1/5\eTD\eTR
402\bTR\bTD2/1\eTD               \bTD2/2\eTD\bTD2/3\eTD\bTD2/4\eTD\bTD2/5\eTD\eTR
403\bTR\bTD[nr=2]3/1 34/1 4/1\eTD\bTD3/2\eTD\bTD3/3\eTD\bTD3/4\eTD\bTD3/5\eTD\eTR
404\bTR                          \bTD4/2\eTD\bTD4/3\eTD\bTD4/4\eTD\bTD4/5\eTD\eTR
405\eTABLE
406\StopExample
407
408\StartExample
409\defineTABLEsetup [xx] [foregroundcolor=red]
410\defineTABLEsetup [zz] [backgroundcolor=blue]
411\bTABLE
412    \bTR      \bTD      oeps \eTD  \bTD oeps \eTD \bTDs[zz] oeps \eTDs \eTR
413    \bTR      \bTDs[xx] oeps \eTDs \bTD oeps \eTD \bTD      oeps \eTD  \eTR
414    \bTRs[xx] \bTD      oeps \eTD  \bTD oeps \eTD \bTDs[zz] oeps \eTDs \eTRs
415\eTABLE
416\StopExample
417
418\stopdocument
419