steps-mkiv.tex /size: 19 Kb    last modification: 2023-12-21 09:43
1% language=us runpath=texruns:manuals/steps
2
3% author    : Hans Hagen
4% copyright : ConTeXt Development Team
5% license   : Creative Commons Attribution ShareAlike 4.0 International
6% reference : pragma-ade.nl | contextgarden.net | texlive (related) distributions
7% origin    : the ConTeXt distribution
8%
9% comment   : Because this manual is distributed with TeX distributions it comes with a rather
10%             liberal license. We try to adapt these documents to upgrades in the (sub)systems
11%             that they describe. Using parts of the content otherwise can therefore conflict
12%             with existing functionality and we cannot be held responsible for that. Many of
13%             the manuals contain characteristic graphics and personal notes or examples that
14%             make no sense when used out-of-context.
15%
16% comment   : Some chapters might have been published in TugBoat, the NTG Maps, the ConTeXt
17%             Group journal or otherwise. Thanks to the editors for corrections. Also thanks
18%             to users for testing, feedback and corrections.
19
20\environment manuals-xml-environment.tex
21
22\useMPlibrary [ove]
23
24\usemodule[x][mathml]
25\usemodule[m][steps]
26
27\startdocument[title=Steps,author=Hans Hagen,palet=steps]
28
29\startbuffer
30\startSTEPchart
31\cell {A}
32\cell {one}   \text{+2}
33\cell {two}   \text{+3}
34\cell {three} \text{+4}
35\cell {four}  \text{+5}
36\cell {five}
37\stopSTEPchart
38\stopbuffer
39
40\startsection[title=Description]
41
42This module is written in the process of defining a couple of styles for an
43educational math book. The macros provide you a way to visualize steps in for
44instance solving equations.
45
46The horizontal visualization is called stepchart, while the vertical alternative
47carries the name steptable. The vertical alternative has a special case that
48permits alignment on a mid symbol (in most cases a relation).
49
50The implementation uses a combination of \TEX\ and \METAPOST, and is set up in
51such a way that hyperlinks and alike will work okay.
52
53\stopsection
54
55\startsection[title=Structure]
56
57The horizontal stepcharts have at most four rows: two rows of cells with each an
58associated row of texts. The plural elements \type {cells} and \type {texts} each
59have two subelements. The \type {texts} elements are put between \type {cells}.
60
61\startbuffer
62<stepchart>
63  <cells> <top> some text </top> <bot> some text </bot> </cells>
64  <texts> <top> text </top> <bot> text </bot> </texts>
65  <cells> <top> some text </top> <bot> some text </bot> </cells>
66</stepchart>
67\stopbuffer
68
69\typebuffer \processxmlbuffer
70
71When a singular \type {cell} element is used in combination with the plural \type
72{texts}, we get one row of step cells with both top and bottom texts.
73
74\startbuffer
75<stepchart>
76  <cell> some text </cell>
77  <texts> <top> text </top> <bot> text </bot> </texts>
78  <cell> some text </cell>
79</stepchart>
80\stopbuffer
81
82\typebuffer \processxmlbuffer
83
84The third horizontal alternative only has singular elements, and as a result the
85texts are put above the step cells.
86
87\startbuffer
88<stepchart>
89  <cell> some cell </cell>
90  <cell> another cell </cell> <text> a bit of text </text>
91  <cell> third cell </cell> <text> more text </text>
92  <cell> last cell </cell>
93</stepchart>
94\stopbuffer
95
96\typebuffer \processxmlbuffer
97
98Normally, the lines go from cell to cell via a text. When you let the \type
99{cell} element follow by more than one \type {text} element (or their plural
100forms), all lines will start at the same point.
101
102\startbuffer
103<stepchart>
104  <cell> some text </cell>
105  <cell> some text </cell> <text> text 1 </text> <text> text 2 </text>
106  <cell> some text </cell>
107  <cell> some text </cell> <text> text 3 </text>
108  <cell> some text </cell>
109</stepchart>
110\stopbuffer
111
112\typebuffer \processxmlbuffer
113
114The vertical alternative (of course) looks different and permits pretty long
115explanations.
116
117\startbuffer
118<steptable>
119  <cell> cell 1 </cell>
120  <text> text 1 </text>
121  <cell> cell 2 </cell>
122  <text> text 2 </text>
123  <cell> cell 3 </cell>
124</steptable>
125\stopbuffer
126
127\typebuffer \processxmlbuffer
128
129When the plural element \type {cells} is used, three sub||elements are expected.
130These align around the mid element \type {c2}.
131
132\startbuffer
133<stepaligntable>
134  <cells> <c1> left </c1> <c2> center </c2> <c3> right </c3> </cells>
135  <text> text </text>
136  <cells> <c1> lft </c1> <c2> ctr </c2> <c3> rgt </c3> </cells>
137  <text> text </text>
138  <cells> <c1> l </c1> <c2> c </c2> <c3> r </c3> </cells>
139</stepaligntable>
140\stopbuffer
141
142\typebuffer \processxmlbuffer
143
144\stopsection
145
146\startsection[title=Lines]
147
148You can draw lines normally or dashes and with or without arrows in both
149directions. This is controlled by the \type {alternative} option of \type
150{\setupSTEPaligntable}. As an example we use this table:
151
152\startbuffer[table]
153\startSTEPaligntable
154    \cells {$2c$} {$=$} {$2a+3b$}
155    \text  {with $a=5$}
156    \cells {$2c$}{$=$} {$10+3b$}
157    \text  {and $b=6$}
158    \cells {$2c$} {$=$} {$10+18$}
159    \text  {we get}
160\stopSTEPaligntable
161\stopbuffer
162
163\typebuffer[table]
164
165Next we show the (currently) 9 alternatives. The zero alternative draws no lines
166so there we can make the distance smaller.
167
168\startbuffer
169\setupSTEPlines
170  [alternative=0,
171   width=.5em]
172\stopbuffer
173
174\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
175
176\startbuffer
177\setupSTEPlines
178  [alternative=1]
179\stopbuffer
180
181\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
182
183\startbuffer
184\setupSTEPlines
185  [alternative=2]
186\stopbuffer
187
188\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
189
190\startbuffer
191\setupSTEPlines
192  [alternative=3]
193\stopbuffer
194
195\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
196
197\startbuffer
198\setupSTEPlines
199  [alternative=4]
200\stopbuffer
201
202\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
203
204\startbuffer
205\setupSTEPlines
206  [alternative=5]
207\stopbuffer
208
209\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
210
211\startbuffer
212\setupSTEPlines
213  [alternative=6]
214\stopbuffer
215
216\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
217
218\startbuffer
219\setupSTEPlines
220  [alternative=7]
221\stopbuffer
222
223\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
224
225\startbuffer
226\setupSTEPlines
227  [alternative=8]
228\stopbuffer
229
230\typebuffer \startlinecorrection \getbuffer \getbuffer[table] \stoplinecorrection
231
232\stopsection
233
234\startsection[title=Usage]
235
236The step chart module is loaded with:
237
238\starttyping
239\usemodule[cell] % was step
240\stoptyping
241
242\noindentation but in the case of embedded math, you should also load the \MATHML\ module:
243
244\starttyping
245\usemodule[cell,mathml]
246\stoptyping
247
248\stopsection
249
250\startsection[title=\XML\ example]
251
252Because we don't want to clutter the examples with \MATHML\ we stick to a simple
253mapping:
254
255\startbuffer
256\startxmlsetups xml:math:simple
257    \xmlsetsetup {#1} {m} {xml:math:simple:tex}
258\stopxmlsetups
259
260\startxmlsetups xml:math:simple:tex
261    \mathematics{\xmlflush{#1}}
262\stopxmlsetups
263
264\xmlregistersetup{xml:math:simple}
265\stopbuffer
266
267\typebuffer \getbuffer
268
269So, in the next examples the \type {m} element contains \TEX\ math.
270
271\startbuffer
272<stepchart>
273  <cells> <top> A           </top> <bot> B           </bot> </cells>
274  <cells> <top> one         </top> <bot> five        </bot> </cells>
275  <texts> <top> <m> +2 </m> </top> <bot> <m> -2 </m> </bot> </texts>
276  <cells> <top> two         </top> <bot> four        </bot> </cells>
277  <texts> <top> <m> +3 </m> </top> <bot> <m> -3 </m> </bot> </texts>
278  <cells> <top> three       </top> <bot> three       </bot> </cells>
279  <texts> <top> <m> +4 </m> </top> <bot> <m> -4 </m> </bot> </texts>
280  <cells> <top> four        </top> <bot> two         </bot> </cells>
281  <texts> <top> <m> +5 </m> </top> <bot> <m> -5 </m> </bot> </texts>
282  <cells> <top> five        </top> <bot> one         </bot> </cells>
283</stepchart>
284\stopbuffer
285
286\typebuffer \processxmlbuffer
287
288\startbuffer
289<stepchart>
290  <cell> A     </cell>
291  <cell> one   </cell> <text> <m> +2 </m> </text>
292  <cell> two   </cell> <text> <m> +3 </m> </text>
293  <cell> three </cell> <text> <m> +4 </m> </text>
294  <cell> four  </cell> <text> <m> +5 </m> </text>
295  <cell> five  </cell>
296</stepchart>
297\stopbuffer
298
299\typebuffer \processxmlbuffer
300
301\startbuffer
302<steptable>
303  <cell>
304    <math xmlns="mathml">
305      <apply> <eq/> <ci> c </ci>
306        <apply> <plus/>
307          <apply> <times/> <cn> 2 </cn> <ci> a </ci> </apply>
308          <apply> <times/> <cn> 3 </cn> <ci> b </ci> </apply>
309        </apply>
310      </apply>
311    </math>
312  </cell>
313  <text> with
314    <math xmlns="mathml">
315      <apply> <eq/> <ci> a </ci> <cn> 5 </cn> </apply>
316    </math>
317  </text>
318  <cell>
319    <math xmlns="mathml">
320      <apply> <eq/> <ci> c </ci>
321        <apply> <plus/> <cn> 10 </cn>
322          <apply> <times/> <cn> 3 </cn> <ci> b </ci> </apply>
323        </apply>
324      </apply>
325    </math>
326  </cell>
327  <text> and
328    <math xmlns="mathml">
329      <apply> <eq/> <ci> b </ci> <cn> 6 </cn> </apply>
330    </math>
331  </text>
332  <cell>
333    <math xmlns="mathml">
334      <apply> <eq/> <ci> c </ci>
335        <apply> <plus/> <cn> 10 </cn> <cn> 18 </cn> </apply>
336      </apply>
337    </math>
338  </cell>
339  <text>
340    we get
341  </text>
342  <cell>
343    <math xmlns="mathml">
344      <apply> <eq/> <ci> c </ci> <cn> 28 </cn> </apply>
345    </math>
346  </cell>
347</steptable>
348\stopbuffer
349
350\typebuffer \processxmlbuffer
351
352\startbuffer
353<stepaligntable>
354  <cells>
355    <c1> <m>c</m> </c1> <c2> <m>=</m> </c2> <c3> <m>2a+3b</m> </c3>
356  </cells>
357  <text>
358    with <m>a=5</m>
359  </text>
360  <cells>
361    <c1> <m>c</m> </c1> <c2> <m>=</m> </c2> <c3> <m>10+3b</m> </c3>
362  </cells>
363  <text>
364    and <m>b=6</m>
365  </text>
366  <cells>
367    <c1> <m>c</m> </c1> <c2> <m>=</m> </c2> <c3> <m>10+18</m> </c3>
368  </cells>
369  <text>
370    we get
371  </text>
372  <cells>
373    <c1> <m>c</m> </c1> <c2> <m>=</m> </c2> <c3> <m>28</m> </c3>
374  </cells>
375</stepaligntable>
376\stopbuffer
377
378\typebuffer \processxmlbuffer
379
380\stopsection
381
382\startsection[title=\TEX\ example]
383
384\startbuffer
385\startSTEPchart
386\cells {A}            {B}
387\cells {one}          {five or more} \texts{$+2$}{$-2$}
388\cells {two}          {four}         \texts{$+3$}{$-3$}
389\cells {three}        {three}        \texts{$+4$}{$-4$}
390\cells {four}         {two}          \texts{$+5$}{$-5$}
391\cells {five or more} {one}
392\stopSTEPchart
393\stopbuffer
394
395\typebuffer \getbuffer
396
397\startbuffer
398\startSTEPchart
399\cell {A}
400\cell {one}          \texts{$+2$}{$-2$}
401\cell {two}          \texts{$+3$}{$-3$}
402\cell {three}        \texts{$+4$}{$-4$}
403\cell {four}         \texts{$+5$}{$-5$}
404\cell {five or more}
405\stopSTEPchart
406\stopbuffer
407
408\typebuffer \getbuffer
409
410\startbuffer
411\startSTEPchart
412\cells {A}            {B}
413\cells {one}          {five or more} \texts{$+2$}{}
414\cells {two}          {four}         \texts{}{$-3$}
415\cells {three}        {three}        \texts{$+4$}{}
416\cells {four}         {two}          \texts{}{$-5$}
417\cells {five or more} {one}
418\stopSTEPchart
419\stopbuffer
420
421\typebuffer \getbuffer
422
423\startbuffer
424\startSTEPchart
425\cell {A}
426\cell {one}   \text{+2} \text{+3} \text{+4} \text{+5}
427\cell {two}
428\cell {three}
429\cell {four}
430\cell {five}
431\stopSTEPchart
432\stopbuffer
433
434\typebuffer \getbuffer
435
436\startbuffer
437\startSTEPchart
438\cell {A}
439\cell {one}   \texts{}{+2} \texts{}{+3}
440\cell {two}
441\cell {three} \texts{+4}{} \texts{+5}{}
442\cell {four}
443\cell {five}
444\stopSTEPchart
445\stopbuffer
446
447\typebuffer \getbuffer
448
449\startbuffer
450\startSTEPchart
451\cell {A}
452\cell {one}   \text{+2}
453\cell {two}   \text{+3}
454\cell {three} \text{+4}
455\cell {four}  \text{+5}
456\cell {five}
457\stopSTEPchart
458\stopbuffer
459
460\typebuffer \getbuffer
461
462\startbuffer
463\startSTEPtable
464\cell {$c=2a+3b$}
465\text {with $a=5$}
466\cell {$c=10+3b$}
467\text {and $b=6$}
468\cell {$c=10+18$}
469\text {we get}
470\cell {$c=28$}
471\stopSTEPtable
472\stopbuffer
473
474\typebuffer \getbuffer
475
476\startbuffer
477\startSTEPaligntable
478\cells {$2c$} {$=$} {$2a+3b$}
479\text  {with $a=5$}
480\cells {$2c$}{$=$} {$10+3b$}
481\text  {and $b=6$}
482\cells {$2c$} {$=$} {$10+18$}
483\text  {we get}
484\cells {$2c$} {$=$} {$28$}
485\text  {and therefore}
486\cells {$c$} {$=$} {$28/2$}
487\text  {which reduces to}
488\cells {$c$} {$=$} {$14$}
489\stopSTEPaligntable
490\stopbuffer
491
492\typebuffer \getbuffer
493
494\startbuffer
495\startSTEPchart
496    \cells {A}     {B}
497    \cells {one}   {five}  \texts{$+2$}{$-2$}
498    \cells {two}   {four}  \texts{$+3$}{$-3$}
499    \cells {three} {three} \texts{$+4$}{$-4$}
500    \cells {four}  {two}   \texts{$+5$}{$-5$}
501    \cells {five}  {one}
502\stopSTEPchart
503\stopbuffer
504
505\typebuffer \getbuffer
506
507\stopsection
508
509\startsection[title=Configuring]
510
511The charts and tables can have their own spacing set. Quite certainly the
512distances between cells will differ.
513
514\starttabulate[|Tl|l|]
515\HL
516\NC \rlap{\tex{setupSTEPcharts} \tex{setupSTEPtables}} \NC \NC \NR
517\HL
518\NC after     \NC hook for commands to execute after the table \NC \NR
519\NC before    \NC hook for commands to execute before the table \NC \NR
520% \NC method    \NC line drawing method\NC \NR
521% \NC height    \NC height of the connecting line \NC \NR
522% \NC offset    \NC the distance between lines and cells and texts \NC \NR
523% \NC hoffset   \NC the horizontal distance between cells \NC \NR
524% \NC voffset   \NC the vertical distance between cells \NC \NR
525\HL
526\stoptabulate
527
528Both charts and tables have common settings with respect to the cells, texts and
529lines.
530
531\starttabulate[|Tl|l|]
532\HL
533\NC \rlap{\tex{setupSTEPcells} \tex{setupSTEPtexts}} \NC \NC \NR
534\HL
535\NC alternative   \NC the kind of shape to be drawn \NC \NR
536\NC backgroundcolor \NC the background color identified by name \NC \NR
537\NC rulethickness   \NC the width of frame around cells \NC \NR
538\NC framecolor      \NC the frame color identified by name \NC \NR
539\NC offset          \NC the space between content and frame \NC \NR
540\NC style           \NC a (preferable named) style \NC \NR
541\NC color           \NC the color of the content \NC \NR
542\HL
543\stoptabulate
544
545\starttabulate[|Tl|l|]
546\HL
547\NC \rlap{\tex{setupSTEPlines}} \NC \NC \NR
548\HL
549\NC alternative   \NC the kind of line to draw between cells \NC \NR
550\NC distance      \NC the distance between lines and text \NC \NR
551\NC offset        \NC the shift to the right of the start of the line \NC \NR
552\NC height        \NC the height of the (curved) line \NC \NR
553\NC rulethickness \NC the width of the lines between cells \NC \NR
554\NC color         \NC the line color identified by name \NC \NR
555\HL
556\stoptabulate
557
558In \TEX, some of the settings, like \type {style} and \type {color} can be set
559between elements. In \XML, the settings are passed as processing instructions.
560
561\startbuffer
562\startSTEPchart
563\cell {A}
564\cell {one}   \text{+2}
565\cell {two}   \text{+3}
566\start
567    \setupSTEPcells[color=darkred,style=bold]
568    \cell {three} \text{+4}
569    \cell {four}  \text{+5}
570\stop
571\cell {five}
572\stopSTEPchart
573\stopbuffer
574
575\typebuffer \getbuffer
576
577There are a couple of alternative shapes available. The most relevant ones are:
578\removeunwantedspaces \dostepwiserecurse   {5} {9} {1} { \TestShape {\recurselevel}}
579\removeunwantedspaces \dostepwiserecurse {12} {19} {1} { \TestShape {\recurselevel}}
580\removeunwantedspaces \dostepwiserecurse {22} {29} {1} { \TestShape {\recurselevel}}.
581
582Although it is not too wise to set up the layout in the middle of a document, for
583graphics one can seldom get by some local fine||tuning. Here we encounter a
584rather fundamental difference between \TEX\ and \XML. In \TEX, you can easily
585change settings on a temporary basis by using groups. In \XML\ on the other hand,
586settings are bound to a category. So, in \TEX\ you can do this:
587
588\startbuffer
589\setupSTEPcells
590  [important]
591  [color=darkgreen,
592   style=bold]
593
594\startSTEPchart
595\cell {A}
596\cell {one} \text{+2}
597\cell {two} \text{+3}
598\cell [important] {three} \text{+4}
599\cell [important] {four}  \text{+5}
600\cell {five}
601\stopSTEPchart
602\stopbuffer
603
604\typebuffer \getbuffer
605
606\noindentation An \XML\ example is:
607
608\startbuffer
609\setupSTEPcells[demo-1][alternative=5]
610\setupSTEPcells[demo-1][framecolor=darkred]
611\setupSTEPtexts[demo-1][framecolor=darkgreen]
612\setupSTEPlines[demo-1][alternative=4]
613\setupSTEPtexts[demo-2][style=bold]
614\stopbuffer
615
616\typebuffer \getbuffer
617
618\noindentation This will be applied to:
619
620\startbuffer
621<steptable class="demo-1">
622  <cell> type 5 </cell>
623  <text> type 6 </text>
624  <cell> type 7 </cell>
625  <text class="demo-2"> type 8 </text>
626  <cell> type 9 </cell>
627</steptable>
628\stopbuffer
629
630\typebuffer
631
632\noindentation so that we get:
633
634\processxmlbuffer
635
636You can also use processing instructions:
637
638\startbuffer
639<stepchart>
640  <cells> <top> some text 1 </top> <bot> some text 2 </bot> </cells>
641  <?context-stepchart-directive text color darkred ?>
642  <texts> <top> text 3 </top> <bot> text 4 </bot> </texts>
643  <cells> <top> some text 5 </top> <bot> some text 6 </bot> </cells>
644  <?context-stepchart-directive text color darkblue ?>
645  <texts> <top> text 7t </top> </texts>
646  <cells> <top> some text 8 </top> </cells>
647</stepchart>
648\stopbuffer
649
650\typebuffer \processxmlbuffer
651
652\startbuffer
653<steptable>
654  <?context-stepchart-directive cell alternative 12 ?>
655  <cell> cell 12 </cell> <text>  12 to 13 </text>
656  <?context-stepchart-directive cell alternative 13 ?>
657  <cell> cell 13 </cell> <text>  13 to 14 </text>
658  <?context-stepchart-directive cell alternative 14 ?>
659  <cell> cell 14 </cell> <text>  14 to 15 </text>
660  <?context-stepchart-directive cell alternative 15 ?>
661  <cell> cell 15 </cell>
662</steptable>
663\stopbuffer
664
665\typebuffer \processxmlbuffer
666
667Some settings apply to the whole chart. In \TEX\ this is easy since we
668can group the whole chart including settings but in \XML\ this is somewhat
669problematic. We can however fall back on basic tex commands but it's
670probably better to use as category (class), like:
671
672\startbuffer
673\setupSTEPtexts[demo-5][distance=3em]
674\stopbuffer
675
676\typebuffer \getbuffer
677
678\noindentation So, the following works as expected:
679
680\startbuffer
681<document>
682  <?context-tex-directive start ?>
683  <?context-stepchart-directive text distance 1em ?>
684  <stepaligntable>
685  <cells> <c1>a</c1> <c2>b</c2> <c3>c</c3> </cells>
686  <text> test 1 </text>
687  <cells> <c1>aa</c1> <c2>b</c2> <c3>ccc</c3> </cells>
688  </stepaligntable>
689  <?context-tex-directive stop ?>
690  <stepaligntable>
691    <cells> <c1>a</c1> <c2>b</c2> <c3>c</c3> </cells>
692    <text> test 2 </text>
693    <cells> <c1>aa</c1> <c2>b</c2> <c3>ccc</c3> </cells>
694  </stepaligntable>
695  <stepaligntable class="demo-5">
696    <cells> <c1>a</c1> <c2>b</c2> <c3>c</c3> </cells>
697    <text> test 3 </text>
698    <cells> <c1>aa</c1> <c2>b</c2> <c3>ccc</c3> </cells>
699  </stepaligntable>
700</document>
701\stopbuffer
702
703\typebuffer \processxmlbuffer
704
705\startbuffer
706<document>
707  <?context-tex-directive start ?>
708  <?context-stepchart-directive cell dx 10ex ?>
709  <stepchart>
710    <cells> <top> from here </top> <bot> there </bot> </cells>
711    <texts> <top> to        </top> <bot> to    </bot> </texts>
712    <cells> <top> and here  </top> <bot> there </bot> </cells>
713  </stepchart>
714  <?context-tex-directive stop ?>
715</document>
716\stopbuffer
717
718\typebuffer \processxmlbuffer
719
720\startbuffer
721<document>
722  <?context-tex-directive start ?>
723  <?context-stepchart-directive line height 30pt ?>
724  <?context-stepchart-directive line offset  5pt ?>
725  <steptable>
726    <cell> some cell </cell>
727    <cell> another cell </cell> <text> a bit of text </text>
728    <cell> third cell </cell> <text> more text </text>
729    <cell> last cell </cell>
730  </steptable>
731  <?context-tex-directive stop ?>
732</document>
733\stopbuffer
734
735\typebuffer \processxmlbuffer
736
737\startbuffer
738<document>
739  <?context-tex-directive start ?>
740  <?context-stepchart-directive line height 30pt ?>
741  <?context-stepchart-directive line offset 15pt ?>
742  <stepchart>
743    <cell> some cell </cell>
744    <cell> another cell </cell> <text> a bit of text </text>
745    <cell> third cell </cell> <text> more text </text>
746    <cell> last cell </cell>
747  </stepchart>
748  <?context-tex-directive stop ?>
749</document>
750\stopbuffer
751
752\typebuffer \processxmlbuffer
753
754\stopsection
755
756\startsection[title=Documentation]
757
758There is no additional documentation on this module.
759
760\stopsection
761
762\stopdocument
763